android - 光标在没有事先 close() Android 的情况下完成

标签 android sqlite sqliteopenhelper

在我的应用程序中,我有一个 ListView 。我通过 SQLiteDatabase 的查询获取数据。当我从数据库中获取数据时,我收到此错误: error

它发生在我从第 20 行到第 21 行时。 occur

我尝试将 cursor.deactivate() 和 cursor.close() 放在 regel 50 上。但没有结果。任何人都知道我为什么会收到此错误以及如何解决它?谢谢:)

最佳答案

你必须在数据库之前关闭游标。将您的代码放在 try/catch block 和 finally block 中,关闭光标,然后关闭数据库:

try {
    db = ...
} catch(Exception ex) { 
    // Log the exception's message or whatever you like
} finally {
    try {
      if( cursor != null && !cursor.isClosed())
        cursor.close();
       if( db.isOpen() )
        db.close();
    } catch(Exception ex) {}
}

在使用 DB 或 Content Provider 进行 IO 时,关闭顺序非常重要。 欲了解更多信息,请参阅 this link

关于android - 光标在没有事先 close() Android 的情况下完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434378/

相关文章:

java - Android 相机拍摄分辨率

java - Android sqlite 日志报告和 db.close()

java - 我有一个离线 SQLite 数据库,我想使其在线并使用它

java - 我在 sqlite 中第一次插入会发生什么?

java - 使用 SQLOpenHelper 获取 ArrayList 不起作用

java - JSON 没有标识符,我如何从中获取信息?

java - 没有List类型参数的自定义ArrayAdapter

android - 如何使用 SqliteDatabse 生成表

android - 在Android的Media Player中添加回声效果

java - 将图库中的图片保存在我的外部 SD 文件夹中?