Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android &引用;“数据库未打开”;当数据库被不同的写入程序关闭时_Android_Sqlite_Sqliteopenhelper - Fatal编程技术网

Android &引用;“数据库未打开”;当数据库被不同的写入程序关闭时

Android &引用;“数据库未打开”;当数据库被不同的写入程序关闭时,android,sqlite,sqliteopenhelper,Android,Sqlite,Sqliteopenhelper,我的应用程序中的ViewPager中有许多片段。在应用程序开始时,其中三个尝试连接到数据库以检索数据 对于数据库处理,我使用带有SQLiteOpenHelper的单例模式。当我需要我的数据库时,我这样调用它:SQLiteDatabase db=DatabaseHelper.getInstance(this.getContext()).getWritableDatabase() 问题: 如果我不使用db.close()关闭数据库,我当然会得到一个android.database.sqlite.Da

我的应用程序中的
ViewPager
中有许多
片段。在应用程序开始时,其中三个尝试连接到数据库以检索数据

对于数据库处理,我使用带有
SQLiteOpenHelper
的单例模式。当我需要我的数据库时,我这样调用它:
SQLiteDatabase db=DatabaseHelper.getInstance(this.getContext()).getWritableDatabase()

问题:

如果我不使用
db.close()
关闭数据库,我当然会得到一个
android.database.sqlite.DatabaseObjectNotClosedException
。我也是。 但由于这是一种单例方法,当我的一个片段完成获取数据时,它会关闭数据库,其余片段无法使用它


当我从数据库中读取某些内容时,检查数据库是否在每次迭代中都处于打开状态似乎是非常多余的我还能做什么?

将数据库的句柄保留在一个位置会有帮助吗?当片段需要数据时,它们使用相同的对象来获取数据。这可以在应用程序上下文本身中进行。singleton模式确保了这种使用。这不会有帮助,因为它仍然是我要关闭的同一个数据库对象。但我发现,我没有关闭光标,这导致了错误。有趣的是,如果我不使用
db.close()
,它就会工作,并且不会出现错误。我应该尝试以某种方式关闭数据库还是保持原样?关闭onDestroy()片段中的数据库怎么样?我会在activitie的onDestroy中关闭它。片段获得对sam einstance的引用,但是没有一个片段能够在acitvitie的onDestroy中存活。例如:
DatabaseHelper.getInstance(this.getWritableDatabase().close()?但有人知道我为什么要关闭它吗?