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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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 - Fatal编程技术网

Android 游标或数据库未关闭错误

Android 游标或数据库未关闭错误,android,sqlite,Android,Sqlite,我使用sqlite制作了一些多活动数据库应用程序, 但我在logcat中收到错误消息,比如 终结尚未停用或关闭的游标 或数据库未关闭错误 我的应用程序似乎运行良好。 我尝试使用onDestroy或after查询或更改活动关闭游标和数据库, 但是,要么应用程序崩溃,要么我得到空指针异常或空listview 我想知道如果我保持现状我会面临什么问题, 例如数据库损坏或与其他应用程序的干扰 我还想知道我是否声明游标 protected Cursor a_cursor; 在第一个活动中,我是否需要在下一

我使用sqlite制作了一些多活动数据库应用程序, 但我在logcat中收到错误消息,比如

终结尚未停用或关闭的游标 或数据库未关闭错误

我的应用程序似乎运行良好。 我尝试使用onDestroy或after查询或更改活动关闭游标和数据库, 但是,要么应用程序崩溃,要么我得到空指针异常或空listview

我想知道如果我保持现状我会面临什么问题, 例如数据库损坏或与其他应用程序的干扰

我还想知道我是否声明游标

protected Cursor a_cursor;
在第一个活动中,我是否需要在下一个活动中使用相同的声明 或者我需要使用

protected Cursor b_cursor;
类似地,对于第一个活动中的DbHelper、Context、Sqlitedatabase等,如

 private SQLiteDatabase adb;
 private DatabaseHelper aDbHelper;
    private final Context aCtx; 

在第二次活动中

程序的结构是这样的

DatabaseHelper--创建一些表或升级

DbAdapter—插入或更新表

Activity1--搜索表和listview--在列表项上单击--Activity2, 上下文菜单可向第二个表中添加一些详细信息

Activity2—Activity3的项目详细信息和按钮

活动3--编辑项目--返回

Activity4--第二个表列表视图

Activity5--数据库导入导出

对不起,如果我的问题看起来太幼稚或原始 但我不是程序员,这些应用程序是我个人使用的 不适合市场

事实上,我没有找到一个完整的例子来满足我的需要
所以我只是从很多例子中添加了一些位和peice来完成事情

过去我们会说用它来处理这些事情。但既然添加了,我建议使用它来保持一切正常。光标加载器直到API级别10才被添加,但是您仍然可以通过


例如,使用游标加载程序,您可以签出此项(或相应项)。

填充游标时,请尝试这样做

Cursor c;
try {
   c = managedQuery...
   lv.setAdapter(c);
} catch(...) {
} finally {
   if(null!=c)
   c.close()
}

如果im没有弄错,managedQuery在api级别10中已被弃用。在以前的项目中使用了它,因此有太多的memObj/cursor问题。是的,使用加载器。是的,这就是为什么我说“我们曾经使用过它”以及为什么我说他应该使用游标加载器。谢谢Kurtis的回复。我使用的是API 8,所以我可以使用managedQuery。你有managedQuery的代码片段或示例吗?我还没有找到任何解决这个荒谬错误的方法。就我而言,我正在关闭一切,但安卓不同。我将为游标加载程序构建API 10之后的所有内容。还有关于数据库损坏问题和游标库声明的任何评论Josephus,我将尝试此操作并发布结果我认为managedQuery仅适用于内容提供商,因此我可能不会使用此功能
Cursor c;
try {
   c = managedQuery...
   lv.setAdapter(c);
} catch(...) {
} finally {
   if(null!=c)
   c.close()
}