如何在iOS中同时执行两个sqlite查询?

时间:2014-03-31 16:06:39

标签: ios objective-c cocoa-touch sqlite

我想在我的iPad应用中同时进行两次数据库操作。同时我想要执行两个查询:一个是更新查询,另一个是选择查询。

我尝试使用dispatch_queue,但它无效。是否有可能同时进行这些操作?

我正在使用sqlite3数据库。

2 个答案:

答案 0 :(得分:1)

你做不到。 sqlite3不是线程安全的。如果您需要同时从两个不同的线程(或队列)执行这些操作,则需要锁定DB句柄,以便一次只能由一个线程使用。

答案 1 :(得分:1)

can'tshouldn't。即使有可能您会得到意想不到的结果,因为您无法预测您将获得旧的结果集或更新的结果集。因此,锁被分配给表以处理这种情况。所以这是不可能的。我建议优先考虑它们。

修改

根据您发布的最后一条评论,告诉您有两个控制器,左侧窗格中的一个出局,另一个进入,并且都有写入或读取操作。

您可以按照以下步骤操作:

  1. 一旦检测到,另一个控制器将加载。首先,启动UIActivityIndi​​cator。
  2. 运行请求以将当前UIViewController的数据更新到数据库。
  3. 停止UIActivityIndi​​cator并删除此UIViewController或更改右侧窗格。
  4. 加载新的UIViewController。启动UIActivityIndi​​cator。
  5. 运行从数据库加载数据的请求。
  6. 停止UIActivityIndi​​cator。
  7. 你已经完成了。
  8. 希望它有所帮助!