Страница 5 из 19

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 14:16
Serious
Дак создаю.

Код: Выделить всё

public class MainActivity extends Activity {

	DataModel datamodel = new DataModel();
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		datamodel.init();
	}

Вообще каждый шаг вывожу в лог. И судя по всему вываливается на строчке

Код: Выделить всё

 mDB = mDBHelper.getWritableDatabase();
в классе DB.java

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 14:27
Foenix
что значит "судя по всему"? в списке ошибок двойной щелчок по строке с ошибкой и адресу в вашей программе перенесет вас в эту строчку

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 14:28
Foenix
Вот весь стек, вызывавший ошибку
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 17:45
Serious
Olivka писал(а):что значит "судя по всему"? в списке ошибок двойной щелчок по строке с ошибкой и адресу в вашей программе перенесет вас в эту строчку
Ну лог перед этой строкой еще срабатывает.
Olivka писал(а):Вот весь стек, вызывавший ошибку
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)
Ну я вижу стек, но не понимаю из-за чего возникает ошибка.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 18:01
Foenix
ну я же не вижу где у вас строчка 60, и вы судя по всему тоже

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 19:00
Serious
Olivka писал(а):ну я же не вижу где у вас строчка 60, и вы судя по всему тоже
А что не так в строчке 60 ? Неправильно пытаюсь открыть подключение к базе ?
Скорее всего какая то простая глупая ошибка. Но я не понимаю где и в чем.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 19:49
Foenix
ошибка в строчке 60. Так говорит лог.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 20:03
Serious
Olivka писал(а):ошибка в строчке 60. Так говорит лог.

Строчка 60 это

Код: Выделить всё

  mDB = mDBHelper.getWritableDatabase();
в классе DB.java
Не могли бы вы подсказать как убрать эту ошибку ?

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 20:22
rezak90
Изображение

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 20:23
rezak90
сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 20:31
Serious
rezak90 писал(а):сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать

Ну спасибо за помощь )))))
буду ковырятся раз такое дело.

А урок с дебагером, вам надо было одним из первых сделать.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 22:15
Foenix
Serious писал(а): А урок с дебагером, вам надо было одним из первых сделать.
ХОрошая постановка вопроса..
Вот ты определил, где ошибка, а привести код этого DB.java разве не нужно, чтоб можно было понять почему у тебя там null передается-то..? Этот код и нужно было приводить..

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 18 мар 2013, 22:43
Serious
Olivka писал(а):
Serious писал(а): А урок с дебагером, вам надо было одним из первых сделать.
ХОрошая постановка вопроса..
Вот ты определил, где ошибка, а привести код этого DB.java разве не нужно, чтоб можно было понять почему у тебя там null передается-то..? Этот код и нужно было приводить..
Класс DB.java взят из этого урока.

Код: Выделить всё

public class DB {
	
	//DataModel datamodel;
	final String LOG_TAG = "myLogs";
	  
	  private static final String DB_NAME = "serversdb";
	  private static final int DB_VERSION = 1;
	  private static final String DB_TABLE = "server";
	  
	  public static final String COLUMN_ID = "_id";
	  public static final String COLUMN_NAME = "name";
	  public static final String COLUMN_LOGIN = "login";
	  public static final String COLUMN_PASSWORD = "password";
	  public static final String COLUMN_IP = "ip";
	  public static final String COLUMN_PORT = "port";
	  public static final String COLUMN_DOMAIN = "domain";
	  public static final String COLUMN_ENCRYP_KEY = "encryption_key";
	  public static final String COLUMN_SAVE_PASS = "save_pass";
	  
	  private static final String DB_CREATE = 
	    "create table " + DB_TABLE + "(" +
	      COLUMN_ID + " integer primary key autoincrement, " +
	      COLUMN_NAME + " text, " +
	      COLUMN_LOGIN + " text, " + 
	      COLUMN_PASSWORD + " text, " + 
	      COLUMN_IP + " text, " + 
	      COLUMN_PORT + " text, " +
	      COLUMN_DOMAIN + " text, " + 
	      COLUMN_ENCRYP_KEY + " text, " +
	      COLUMN_SAVE_PASS + " text" +
	    ");";
	  
	  private final Context mCtx;
	  
	  
	  private DBHelper mDBHelper;
	  private SQLiteDatabase mDB;
	  
	  public DB(Context ctx) {
	    mCtx = ctx;
	  }
	  
	  // открыть подключение
	  public void open() {
		  Log.d(LOG_TAG, "--- open connect database ---");
	    mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
	    Log.d(LOG_TAG, "--- 2 open connect database ---");
	    mDB = mDBHelper.getWritableDatabase();
	    Log.d(LOG_TAG, "--- 3 open connect database ---");
	  }
	  
	  // закрыть подключение
	  public void close() {
		  Log.d(LOG_TAG, "--- close connect database ---");
	    if (mDBHelper!=null) mDBHelper.close();
	  }
	  
	  // получить все данные из таблицы DB_TABLE
	  public Cursor getAllData() {
		  Log.d(LOG_TAG, "--- getALL ROWS database ---");
	    return mDB.query(DB_TABLE, null, null, null, null, null, null);
	  }
	  
	  // добавить запись в DB_TABLE
	  public void addRec(String name, String login, String pass, String ip,
			  String port, String domain, String encryp_key, String save_pass) {
		  Log.d(LOG_TAG, "--- addREC database ---");
	    ContentValues cv = new ContentValues();
	    cv.put(COLUMN_NAME, name);
	    cv.put(COLUMN_LOGIN, login);
	    cv.put(COLUMN_PASSWORD, pass);
	    cv.put(COLUMN_IP, ip);
	    cv.put(COLUMN_PORT, port);
	    cv.put(COLUMN_DOMAIN, domain);
	    cv.put(COLUMN_ENCRYP_KEY, encryp_key);
	    cv.put(COLUMN_SAVE_PASS, save_pass);
	    mDB.insert(DB_TABLE, null, cv);
	    
	  }
	  
	  // удалить запись из DB_TABLE
	  public void delRec(long id) {
	    mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
	  }
	  
	  // класс по созданию и управлению БД
	  private class DBHelper extends SQLiteOpenHelper {

	    public DBHelper(Context context, String name, CursorFactory factory,
	        int version) {
	    	
	      super(context, name, factory, version);
	      Log.d(LOG_TAG, "--- DBHelper  ---");
	    }

	    // создаем и заполняем БД
	    @Override
	    public void onCreate(SQLiteDatabase db) {
	    	Log.d(LOG_TAG, "--- onCreate database ---");
	      db.execSQL(DB_CREATE);
	      

	    }

	    @Override
	    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	    }
	  }
	}

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 01:28
Foenix
Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 10:37
Serious
Olivka писал(а):Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
Видимо я где то жестко туплю, но я ведь создаю переменную класса.

Код: Выделить всё

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		datamodel = new DataModel();
		datamodel.init();
	}

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 11:59
Foenix
ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса? Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 12:29
Serious
Olivka писал(а):ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
Создание переменной класса было вне метода, засунул в метод. Ничего не изменилось.
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса?
Это метод класса MainActivity.java
Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.
Наверно ошибка в этом. Попытался вынести в отдельный класс public class DBHelper extends SQLiteOpenHelper.
Ошибка по прежнему осталась.
Спасибо за подсказку, буду пробовать что нибудь.

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 14:20
rezak90
лучше бы выклали уже проект быстрее бы помогли

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 19 мар 2013, 14:59
Foenix
Примеров в сети полно. Сделай как тут http://www.mysamplecode.com/2012/07/and ... qlite.html

Re: Урок 52. SimpleCursorAdapter, пример использования

Добавлено: 20 мар 2013, 09:22
Serious
Выкладываю проект.

http://zalil.ru/34363954