当前位置: 首页 > 知识库问答 >
问题:

我应该什么时候关闭光标和db?

吕嘉荣
2023-03-14

我在自定义视图的不同方法中多次使用同一个光标。我应该在每次使用后关闭光标还是可以一直打开直到视图被破坏?对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。

共有3个答案

吴高峰
2023-03-14

您可以尝试将db和光标代码移动到onResume和onPush以避免该错误。但我想一个更干净的方法是在您的活动中实现LoaderCallback。你考虑过吗?

柳浩大
2023-03-14

一旦不需要连接,就要关闭与DB的所有连接。如果您以后需要连接,也可以保留连接,即在活动被破坏时关闭连接。

郎成弘
2023-03-14

视情况而定。如果光标结果不会同时更改(例如,远程连接修改数据库),则可以。别忘了使用CursorLoader让Android自动管理你的光标(例如,如果你的应用程序崩溃,请关闭光标)。

对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?

是的,您可以在onResume()中打开,然后在onPause()回调中关闭,或者当您知道您的数据库将不再被查询时。

我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。

只有当你的应用程序崩溃时,这才是正常的。如果你像我上面说的那样做,就不应该发生。

 类似资料:
  • 问题内容: 我在ORM上还很新。我刚刚开始阅读有关使用Hibernate的Java Persistence API的书籍和文档。 我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗? 我们是否应该在每次持久/更新/删除后关闭它?如果我们不关闭它,数据库连接会保持打开状态吗? 问题答案: 我只是想知道,关闭与jdbc数据库连接关闭类似吗? 这并非完全正确,但关闭

  • 如果使用,我知道你可以使用,如下所示: 但是如果你需要遍历数组呢?1)遍历光标来构造数组,然后2)遍历数组来完成你的工作似乎太过分了。所以我在想最好使用。 但是,这给了我一个错误: 它似乎都是库代码,我不确定如何调试它。但问题似乎出在。 是这样吗

  • 问题内容: 我仍然是React的菜鸟,在互联网上的许多示例中,我看到了渲染子元素时出现的这种变化,我感到困惑。通常我看到以下内容: 但是然后我看到一个这样的例子: 现在,我了解了api,但是文档并未确切说明我何时应该使用它。 那么,一个人做什么却另一个人不能做什么呢?有人可以用更好的例子向我解释吗? 问题答案: 编辑: 相反,请看Vennesa的答案,这是一个更好的解释。 原版的: 首先,该示例仅

  • 问题内容: 我有一个简单的静态类,其中有一些方法。这些方法中的每一个都打开SqlConnection,查询数据库并关闭连接。这样,我可以确定我总是关闭与数据库的连接,但是,另一方面,我不喜欢总是打开和关闭连接。以下是我的方法的示例。 考虑到这些方法在静态类内部,我是否应该有一个包含单个SqlConnection的静态成员?我应该如何以及何时丢弃它?最佳做法是什么? 问题答案: 不,除非必须,否则不

  • 问题内容: 我想知道如果不关闭ResultSet是否可以将其关闭?我有一个ResultSet已关闭异常,但是我确定我没有在任何地方关闭ResultSet。我的确切做法是,我使用ResultSet来执行SELECT查询,然后使用相同的ResultSet,因为此方法调用了ResultSet: 那么,另一个问题是:有没有一种方法可以确保打开ResultSet? 第三个问题:也许是问题所在,因为我从不关闭

  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync