我想实现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 那里也有一个很棒的答案。 –