【问题标题】:When should I close a FMDatabaseQueue?我应该何时关闭 FMDatabaseQueue?
【发布时间】:2014-04-05 17:05:52
【问题描述】:

我在我的 iOS 应用程序中使用FMDB 来存储各种信息...

有时可能会发生多个线程同时访问我的FMDatabase,所以我决定使用FMDatabaseQueue 与我的SQLite 数据库进行交互。

在我看来,不可能打开和关闭FMDatabaseQueue 底层FMDatabase。这是正确的吗?

是否可以在应用程序启动时创建一个FMDatabaseQueue 实例,在所有地方和多个线程中使用它,并在应用程序退出时关闭它?

如果不是:谁能解释一下FMDatabaseQueue 的工作原理?

【问题讨论】:

  • 是的,你是对的。事实上,即使在使用FMDatabase 的单线程应用程序中,通常也建议打开一次。
  • @Rob 奇怪的是,当我使用FMDatabaseQueue 方法(如inTransactioninDatabase)访问底层FMDatabse 时,它并没有打开。我收到错误The FMDatabase <FMDatabase: 0x7bf23b40> is not open. 我尝试在inTransaction 方法的开头添加一行代码[db open];,然后它运行良好。你知道我为什么要在这里显式打开数据库吗?另外,如果我明确打开它,是否也需要关闭它?
  • @Sam - 如果您在 FMDatabaseQueue inDatabaseinTransaction 中对数据库执行了 close,则可能会发生这种情况。当您使用FMDatabaseQueue 时,您永远不应调用传递给您的FMDatabase 中的close

标签: ios sqlite fmdb


【解决方案1】:

我认为 FMDB 阅读我的内容已经为您解答了这些问题。

如果您释放队列,它将关闭连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2011-09-01
    • 2023-01-06
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    相关资源
    最近更新 更多