Я пытаюсь создать базу данных с 12 различными таблицами, которая до сегодняшнего дня работала нормально. Теперь каждый раз, когда я запускаю свое приложение в первый раз после его удаления и переустановки (или просто очистки данных приложения), я получаю сообщение об ошибке в заголовке. Тем не менее, во второй раз, когда я запускаю приложение после получения этой ошибки, оно работает нормально.
Код ниже взят из моего класса DatabaseHelper, который более или менее совпадает с учебником по Android Notepad.
Эта ошибка возникает после того, как в моей деятельности была открыта база данных, и я пытаюсь сделать свой первый запрос.
Любые предложения о том, что может вызвать это и как ее решить?
private static class DatabaseHelper extends SQLiteOpenHelper {
private static String DB_PATH = "/data/data/my_app/databases/";
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
if (!checkDataBase()) {
db.execSQL(TABLE_1);
db.execSQL(TABLE_2);
db.execSQL(TABLE_3);
db.execSQL(TABLE_4);
db.execSQL(TABLE_5);
db.execSQL(TABLE_6);
db.execSQL(TABLE_7);
db.execSQL(TABLE_8);
db.execSQL(TABLE_9);
db.execSQL(TABLE_10);
db.execSQL(TABLE_11);
db.execSQL(TABLE_12);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_1);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_2);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_3);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_4);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_5);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_6);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_7);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_8);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_9);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_10);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_11);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_12);
onCreate(db);
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(DB_PATH + DATABASE_NAME, null, SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
}
return checkDB != null ? true : false;
}
}