在每个活动中,我在onCreate()方法中添加了以下行:

database = new DatabaseHelper(this);
database.open();

在每个onDestroy()方法中,下面一行:
database.close();

只要活动没有被破坏,数据库就被打开。
有时,如果我的应用程序要更新数据库中的某些内容,有些用户会强制关闭。
Following error:
java.lang.IllegalStateException: database not open
at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1776)
at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1731)

怎么会这样?
如果我在onCreate()中打开数据库并在onDestroy()中关闭它,是否应该始终打开它?!

最佳答案

binnyb是对的,很可能您的数据库在后台活动onDestroy中关闭,而活动活动中出现错误。您必须在需要保存/检索数据时打开/关闭数据库。
UPD:
看看google's dev docs,如果数据库已经打开,getwritebledatabase将返回一个缓存对象。

关于android - 数据库打开/关闭-数据库未打开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5170179/

10-13 05:51
查看更多