iphone - 在objective-C中同步sqlite数据库

标签 iphone objective-c ios xcode sqlite

我有一个 View ,我在后台线程中将数据插入到来自服务器的 sqlite 数据库。现在,当用户点击并导航到另一个 View 时,我必须从该数据库中读取内容,但我无法获取内容,因为数据库已经在最后一个 View 的后台线程中打开并且它给出错误“数据库已锁定”。

注意:这两个操作都在不同的表中,即我在不同的表中写入并从其他表中读取。

sqlite 是否支持多线程,如果是,那么如何从数据库中删除锁?

最佳答案

SQLite 支持多线程。您可以在线程之间共享您的连接句柄/对象,它们会很好地同步他们的访问。

编辑:通过 sqlite3对象(sqlite3_open() 作为第二个参数返回的那个)到线程,而不是在线程中重新打开数据库。像这样的东西:

sqlite3 *MyDatabase; //Initialized somewhere
NSArray *DataForThread = [NSArray arrayWithObjects:
    request,
    [NSValue valueWithPointer: MyDatabase],
    nil];

[self performSelectorInBackground:@selector(processResponseInBackground:)        withObject:DataForThread];

在线程内部,像这样恢复 SQLite3 对象:
sqlite3 *MyDatabase = [[ThreadData objectAtIndex:1] pointerValue];

关于iphone - 在objective-C中同步sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006573/

相关文章:

ios - 在以前的版本中为应用程序创建快捷方式会崩溃

ios - textFieldShouldReturn 不工作

ios - 将 Facebook 登录与 Parse 集成

ios - iOS 上的 BLE 连接设备到底是什么?

android - 如何将 Cordova 应用链接到 App Store?

iphone - 如何使用\t [tab] 运算符在列中格式化 NSString?

ios - 创建圆角 View

ios - iOS 上的直播应用程序出现错误 849

iphone - XCode 不接受我的 57x57 尺寸图标?

ios - 警告:无法加载任何Objective-C类信息。这将大大降低可用类型信息的质量