【问题标题】:Database is locked when tried to insert values in table?尝试在表中插入值时数据库被锁定?
【发布时间】:2011-07-22 16:55:21
【问题描述】:

我正在为我的应用程序创建一个数据库。我成功地创建了表,也能够在该表中插入值。在我终止我的应用程序后,当我再次启动应用程序并尝试在其中插入一些新值时,它会给出 errorString 作为“数据库已锁定”。这是我的代码

if (sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
sqlStmt = [ [ NSString stringWithFormat:@"插入 ePubTable 值 ('%@') ; " ,ePubTitle] cStringUsingEncoding:NSUTF8StringEncoding ] ;​​

int retVal = sqlite3_exec ( 数据库,sqlStmt,NULL,NULL, & errString );
如果(retVal==0)
printf("数据插入");
}

sqlite3_close(数据库);

我无法理解为什么数据库被锁定,我在哪里犯了错误。
请帮我解决这个问题。 提前致谢。

【问题讨论】:

    标签: objective-c ios4 sqlite


    【解决方案1】:

    数据库必须从主包复制到文档文件夹才能写入或数据库设置为只读

    抱歉英语不好,我是意大利人

    【讨论】:

    • 第一次使用相同的代码不会有问题。但是当我终止应用程序并再次启动它时,它会给出数据库被锁定的错误。如果我再次从文件夹中删除数据库将创建,那么它只适用于第一次。请告诉我我做错了什么。
    【解决方案2】:

    我得到了这个数据库锁定错误的正确解决方案。 每当我们从数据库中更新或选择任何值时,我们都需要在关闭数据库之前完成语句,否则它会锁定您的数据库。语法如下:

    sqlite3_finalize(语句);

    下面的链接对我有很大帮助 http://iphoneramble.blogspot.com/2009/07/sqlite-and-database-is-locked.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      相关资源
      最近更新 更多