ios - sqlite3 - iOS - 数据库被锁定

标签 ios xcode sqlite

我正在为 ipad 开发一个应用程序,我正在使用 sqlite 语句(选择、更新、插入、删除)。

我在每句话开头打开(sqlite3_open)数据库,在结尾关闭(sqlite3_close)。但有时我会收到“数据库已锁定”消息。

我不知道我能做些什么来解决这个问题。

感谢并抱歉提供这么少的信息。

最佳答案

如果我没记错的话,sqllite 的问题是你一次只能访问它一次。 如果你有多个线程,你可以在这种情况下运行。示例:

在线程 t1 上运行方法 1(访问数据库)。 x 秒后在线程 t2 上运行方法 2(访问数据库)。

如果 method1 在那些 x 秒内没有完成,两个方法将同时访问它。 而且,正如我所说,我知道 sqllite 不支持这一点。

您应该尝试标记您的数据库的使用情况,如果您想访问它但它正在使用中,请在 x 秒后重试。像这样:

- (void) generalMethodThatUsesDatabses
{
    if(databaseIsUsed)
    {
         [self performSelector:@selector(generalMethodThatUsesDatabses) withObject:nil afterDelay:5];
          return;
    }

    databaseIsUsed = TRUE;   //global bool variable


    //your code here

    databaseIsUsed = FALSE;

}

希望这对您有所帮助。干杯!

关于ios - sqlite3 - iOS - 数据库被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929104/

相关文章:

ios - timer.invalidate() 无法在 Swift 中的同一 View 上工作

ios - 我如何从一个按钮导航到另一个页面

ios - 无法使用 'sequence' 类型的参数列表调用 '([AnyObject])'

sqlite - 从多列的子查询中选择记录

java - 正确为具有未知值的 SQL MATCH 准备的语句

android - SQLite 计数(列)GROUP BY 问题

ios - UIWebView 中的 Facebook 评论框高度不正确

iphone - 圆圈到圆圈的碰撞 react - 同等优先级

ios - 更新到 swift 3 JSON 文件

iOS。更新此项目中的 cocos2d 库后无法运行项目