我想實現android SQLite使用設計模式,以確保每個應用程序打開SQLiteDatabase實例。無法獲得SQLite可寫數據庫
public class BaseDataSource {
private static final CustomSQLiteHelper dbHelper = CustomSQLiteHelper.getInstance();
protected static SQLiteDatabase database;
static {
//HERE RISES EXCEPTION
BaseDataSource.database = BaseDataSource.dbHelper.getWritableDatabase();
}
private void close() {
if(null != BaseDataSource.database && BaseDataSource.database.isOpen()) {
BaseDataSource.database.close();
if(null != BaseDataSource.dbHelper) {
BaseDataSource.dbHelper.close();
}
}
}
protected BaseDataSource() {}
protected void finalize() throws Throwable {
close();
super.finalize();
}
}
不過,雖然我的應用程序開始我得到這樣的例外:
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/com.xxx/databases/xxx.db
如何SQLiteDatabse數據庫可以打開和創建類之前關閉?
修訂
我發現我自己的錯誤。它在CustomSQLiteHelper類中。在onCreate
方法中,我關閉了數據庫。我嘗試了所有在互聯網上找到的解決方案,並且因爲我犯了一個錯誤。下面讓一個數據庫對象時模式
極其相似exeption這裏http://stackoverflow.com/questions/6535908/android-sqlite-sqliteopenhelper-error-illegalstateexception-db-already-clo 那裏也有一個很棒的答案。 –