Я немного не понимаю. При вызове (а точнее создании базы данных), разве не должен вызываться метод 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, а метод не запускается. Это нормально или так не должно быть?
Ответ
Согласно тык и тык
Проблема здесь в том, что в конструкторе вы явно не вызываете метод onCreate() и в конструкторе супер-класса этого вызова тоже нет.
Чтобы его вызвать вы можете просто в коде вызвать методы получения объекта БД и она будет создана, если ещё не создана (т.е. будет вызван метод onCreate())
DBHelper dBHelper = new DBHelper(getContext());
dBHelper.getWritableDatabase();
//или
//dBHelper.getReadableDatabase();
Комментариев нет:
Отправить комментарий