在我的Android应用程序中,我有以下代码创建我的数据库。这没有问题,但直接在执行此代码后我尝试getReadableDatabase()并且它说数据库被锁定抛出异常
我需要在这里关闭/破坏任何东西以防止它被锁定吗?谢谢!
//这样做是为了看它是否已经创建
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = "/data/data/com.hats.android/databases/";
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
//database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
//然后完成以下操作来创建它(此后是getReadableDatabase()错误)
@Override
public void onCreate(SQLiteDatabase db) {
SQLiteDatabase checkDB = null;
String myPath = "/data/data/com.hats.android/databases/";
checkDB = this.myContext.openOrCreateDatabase(myPath, SQLiteDatabase.CREATE_IF_NECESSARY, null);
checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");
checkDB.close();
}
答案 0 :(得分:1)
在你的onCreate()中你不需要做任何这些。您只需要execSQL行,而不是:
checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");
只需使用传入的db:
db.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");