ios - iOS 中的 SQLite 'database is locked' 错误

标签 ios database sqlite insert

我正在为我的 iOS 应用程序使用 sqlite 数据库。当我试图在表中插入一行时,我收到一条错误消息,提示“数据库已锁定”。我同意针对相同的问题发布了许多问题,并给出了错误的许多解决方案和原因,但我的问题没有得到解决。 禁止在 sqlite 中使用多线程的原因,应该打开数据库,应该调用 finalize 等。我发布我的代码以使其更加透明。

插入函数

 int open=sqlite3_open([@"/Users/macintosh/Documents/Apps/Project/MyLocal DB/MyLocal.sqlite" UTF8String], &database);

sqlite3_stmt *statement = NULL;

const char *sql = "insert into History (MNo,PID, Move,Result,WID, CreatedOn) Values( ?, ?, ?, ?, ?, ?)";


NSDateFormatter *DateFormatter=[[NSDateFormatter alloc] init];
[DateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];


if(open==SQLITE_OK)
{

    if (sqlite3_prepare(database, sql, -1, &statement, NULL) ==SQLITE_OK)
    {
        sqlite3_bind_int(statement, 0, mid);
        sqlite3_bind_int(statement, 1, pid);
        sqlite3_bind_int(statement, 2, cno);
        sqlite3_bind_int(statement, 3, result);
        sqlite3_bind_int(statement, 4, wid);
        sqlite3_bind_text(statement, 5, [[DateFormatter stringFromDate:[NSDate date]] UTF8String], -1, SQLITE_TRANSIENT);



        if (sqlite3_step(statement)==SQLITE_DONE)
        {
            NSLog(@"inserted the values in table");

        }
        else
        {
            NSLog(@" not inserted the values in table");
            NSLog(@"error: %s", sqlite3_errmsg(database));
        }
        sqlite3_finalize(statement);



    }
    else
    {
        NSLog(@"Problem with prepare statement: %s", sqlite3_errmsg(database));
    }
    sqlite3_close(database);
    NSLog(@"db closed");
}
else
{
    NSLog(@"An error has occured: %s",sqlite3_errmsg(database));
}

注意:我在很多地方都使用了相同的功能来插入一行并且效果很好。我现在收到此错误,并且我已确保在运行此语句时同一数据库上没有其他语句在运行。

最佳答案

我想你忘记在任何地方关闭这个数据库,这就是你收到这个错误的原因

关于ios - iOS 中的 SQLite 'database is locked' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273308/

相关文章:

使用sqlite3查询时MySQL语法错误

java - SQLite 数据库更新

iOS:如何减少 Storyboard 和代码重复?

ios - 推送通知代码执行(强制退出应用程序)

ios - 使用CABasicAnimation切割 View 一半

ios - watch 应用安装出错 - 应用安装失败 : Invalid Application Stub

database - 如何确定多值依赖MVD(传递规则)?

MySQL:多行到多个字段?

java - 从 Firebase 数据库中按 id 检索对象

java - 在Android Studio中:How I can update the column data?