当我在安卓系统中创建和填充我的新SQLiteDatabase时,我遇到了两个自相矛盾的异常。简而言之,我的代码:
SQLiteOpenHelper扩展类:
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_TABLE_CREATE);
loadLevelData(db); //puts data in the database
//db.close(); <<< ?
}
在我的活动类中,我实例化了这个类(在onCreate()中),并调用getWritableDatabase():
dbHelper = new DbOpenHelper(getApplicationContext());
database = dbHelper.getWritableDatabase();
现在,如果我在填充数据库后不调用db.close()
,如上面所示,我将得到
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
但是,如果关闭它,则会得到以下异常:
java.lang.IllegalStateException: database not open
在getWritableDatabase()。
这让我很困惑,所以有人能帮我解决什么问题吗?
发布于 2012-02-06 22:15:52
您不需要关闭DatabaseHelper
类中的数据库。但是,每次打开它时都需要关闭它,调用getWritableDatabase
dbHelper = new DbOpenHelper(getApplicationContext());
database = dbHelper.getWritableDatabase();
//... do something with database
database.close();
https://stackoverflow.com/questions/9167948
复制相似问题