#java #android
Я немного не понимаю. При вызове (а точнее создании базы данных), разве не должен вызываться метод onCreate? Вот код базы данных: public class DBHelper extends SQLiteOpenHelper { String name; final String TAG = "APP"; final String MSG = "БАЗА ДАННЫХ: "; public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, 1); } public DBHelper(Context context, String name) { super(context, name, null, 1); this.name = name; } @Override public void onCreate(SQLiteDatabase db) { Log.i(TAG, MSG + "создание таблицы " + name); if (name.equals("dictionaries")) { db.execSQL("create table " + name + " (" + BaseColumns._ID + " integer primary key autoincrement, " + "dictionary" + " String);"); } else { Log.i(TAG, MSG + "создание таблицы 1"); db.execSQL("create table " + name + "_verb" + " (" + BaseColumns._ID + " integer primary key autoincrement, " + "last" + " String, " + "currently" + " String, " + "next" + " String, " + "translate + String);"); Log.i(TAG, MSG + "создание таблицы 2"); db.execSQL("create table " + name + "_noun" + " (" + BaseColumns._ID + " integer primary key autoincrement, " + "word" + " String, " + "translate" + " String);"); Log.i(TAG, MSG + "создание таблицы 3"); db.execSQL("create table " + name + "_phrase" + " (" + BaseColumns._ID + " integer primary key autoincrement, " + "phrase" + " String, " + "translate" + " String);"); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } После вызова несуществующей таблицы, в лог выводит сообщение только из конструктора DBHelper, а метод не запускается. Это нормально или так не должно быть?
Ответы
Ответ 1
Согласно тык и тык Проблема здесь в том, что в конструкторе вы явно не вызываете метод onCreate() и в конструкторе супер-класса этого вызова тоже нет. Чтобы его вызвать вы можете просто в коде вызвать методы получения объекта БД и она будет создана, если ещё не создана (т.е. будет вызван метод onCreate()) DBHelper dBHelper = new DBHelper(getContext()); dBHelper.getWritableDatabase(); //или //dBHelper.getReadableDatabase();
Комментариев нет:
Отправить комментарий