【问题标题】:Can I read from a SQLite db while writing to it on the iPhone?我可以在 iPhone 上写入 SQLite 数据库时读取它吗?
【发布时间】:2009-08-20 10:51:13
【问题描述】:

在写入 SQLite 数据库时是否可以读取它?

我知道写入时会阻止写入访问,但读取时是否相同?

【问题讨论】:

    标签: iphone sqlite readwritelock


    【解决方案1】:

    这有点令人费解,但请查看File Locking and Concurrency documentation for SQLite。听起来如果数据库处于exclusive 锁定模式,那是唯一不允许读取的时间。除了解锁之外,当数据库甚至没有打开时。

    我不是 100% 确定,但我认为就是这个意思。

    【讨论】:

      【解决方案2】:

      经过一番阅读,并查看了 FMDB 代码,我发现我没有正确使用 SQLITE_BUSY 和 SQLITE_LOCKED 返回值。

      根据 FMDB 代码,应该循环进行有限次数的重试,然后等待一小段时间。

      所以我在我的代码中实现了这一点,一切似乎都运行良好。

      【讨论】:

        【解决方案3】:

        是的,尽管需要考虑所有相关的多线程问题。我通常通过 sqlite3_open_v2() 打开同一个数据库文件的多个句柄。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-26
          • 2010-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-27
          • 2020-08-27
          相关资源
          最近更新 更多