在每个活动中,我在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()
中将其关闭,是否应始终打开?!
答案 0 :(得分:3)
Binnyb是对的,很可能您的数据库在后台活动onDestroy
中关闭,而活动活动中的错误会增加。您需要在需要保存/检索数据时打开/关闭数据库。
UPD:
查看google's dev docs,如果已经打开了数据库,getWritableDatabase将返回一个缓存的对象。