с помощью: -
@Override
public boolean onCreate() {
dbHelper = new DatabaseHelper(getContext(), null);
SqliteDatabase db = dbHelper.getWritableDatabase(); //<<<<<<<<<<<
return true;
}
пытается открыть базу данных и, таким образом, будет вызвано onCreate / onUpgrade .- onCreate только если база данных не существует.- onUpgrade только если база данных существует И указанный номер версии больше, чем версия базы данных, хранящаяся в базе данных.
То есть при создании экземпляра Помощника по базам данных (подкласс SQLiteOpenHelper) никакой попытки не происходитсделал, чтобы открыть базу данных.
Попытка открыть базу данных осуществляется только при вызове getWritableDatabase (или getReadableDatabase ) SQLiteDatabase.Оба пытаются открыть базу данных.Отмечая, что getWritableDatabase или getReadableDatabase вполне могут быть вызваны неявно.
- Обратите внимание, что вышеупомянутое не включает непосредственное использование методов OPEN SQliteDatabase.
Альтернативное исправление
Я лично склоняюсь к открытию при создании помощника базы данных, используя: -
public DatabaseHelper(Context context, CursorFactory cf) {
super(context, DBName, cf, DBVersion);
this.getWritableDatabase();
}
- Я склонен сохранять возвращенную базу данных SQLiteDatabase в переменную класса и затем использовать ее вместо использования
this.getWritableDatabase()
восновные методы.