在每个活动中,我在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/