【发布时间】:2011-09-01 18:28:06
【问题描述】:
我一直收到这个异常,DatabaseObjectNotClosedException:
close() was never explicitly called on database '/data/data/com.project.test/databases/database'
E/SQLiteDatabase(13921): android.database.sqlite.DatabaseObjectNotClosedException:
Application did not close the cursor or database object that was opened here
我尝试关闭数据库助手和游标,但我会得到运行时异常。当我离开活动并在点击后退按钮后重新访问它时会发生这种情况。
如何正确关闭我的游标和助手?
我尝试了两种方法:
首先,在每次单独使用后关闭游标,然后关闭数据库助手 onpause。
其次,关闭游标onpause以及databasehelper,但两者都不起作用。
有人可以帮我解决这个问题吗?
编辑:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = this.getActivity();
context = this.getActivity().getApplicationContext();
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDbHelper = new DatabaseHelper(context);
mDbHelper.open();
populateList();
}
public void populateList() {
directoryCursor = mDbHelper.fetchAllRootDirectories();
activity.startManagingCursor(directoryCursor);
adapter = new DirectoryListAdapter(this.getActivity(), directoryCursor);
this.setListAdapter(adapter);
}
......
private UpdateDatabaseListener updateDatabaseListener = new UpdateDatabaseListener() {
public void onUpdate(int from, int to) {
.....
findExistingRecordCursor = mDbHelper.findExistingRecords(from, to);
activity.startManagingCursor(findExistingRecordCursor);
if(findExistingRecordCursor.getCount() == 0) {
....
}
}
}
我在 onCreate() 函数中打开了一个数据库助手。 填充列表视图时使用的游标, 用于查找现有记录的游标, 光标来获取信息。
更新:
我已尝试关闭 onPause 和 onDestroy,但它仍然会因运行时异常而崩溃。
【问题讨论】:
-
能否请您发布您的代码
-
@Gaurav 您实际上需要查看代码的哪一部分?因为它真的有很多代码。我可以看到我可以粘贴的内容。
-
@Gaurav 我已经写下了我使用数据库助手和游标的地方
-
@Gaurav 我也从我的活动中添加了一些代码。
标签: java android database sqlite exception