【问题标题】:Inserting data into sqlite in the background process在后台进程向sqlite插入数据
【发布时间】:2012-08-05 22:11:37
【问题描述】:

我正在从网上下载数据并将下载的数据插入到 sqlite 数据库中。现在我想要的是插入数据库的数据,这些数据应该在后台发生,同时下载用户也可以在视图上做其他事情。那么在后台进程中是否可以将数据插入到 sqlite 中。

我正在使用它,但应用程序在使用它时崩溃。

NSNumber *number = [NSNumber numberWithInteger:1];
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
                                                                        selector:@selector(InsertIntodatabase)
                                                                          object:number];

[queue addOperation:operation];
[operation release];

提前致谢

【问题讨论】:

    标签: iphone objective-c xcode ios5 sqlite


    【解决方案1】:

    您可以在后台线程中插入数据。但是,如果您同时(或多或少)尝试从两个不同的线程访问数据库,您将收到难以恢复的“数据库锁定”错误。

    所以你需要提供一些外部联锁来防止来自两个不同线程的同时访问。在某些情况下,程序逻辑本身会阻止这种情况,而在其他情况下,您需要实现显式锁定机制。

    【讨论】:

    • 你能告诉我如何提供外部联锁...?
    • 好吧,你总是可以使用NSLock。还有其他选择。
    • 我如何使用 NSLock...我从未使用过它,任何人都可以粘贴任何示例代码...
    • 阅读文档。研究Threading Programming Guide。谷歌。我们不是来牵你的手的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2019-06-21
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多