【问题标题】:sqlite DB is shows SQLITE_BUSY after the getting sqlite3_last_insert_rowid() objective csqlite DB 在获取 sqlite3_last_insert_rowid() 目标 c 后显示 SQLITE_BUSY
【发布时间】:2015-10-22 23:45:53
【问题描述】:

我正在尝试在 sqlite DB 成员表中插入一个成员。如果我使用 sqlite3_last_insert_rowid() 插入值后,我无法插入另一个成员。该语句显示 SQLITE_BUSY。这是我的代码。请任何人帮忙。

-(NSInteger) saveMember:(TMMember *)member {
const char *dbPath = [databasePath UTF8String];
if (sqlite3_open(dbPath, &database) == SQLITE_OK)
{
    NSString *insertSQL = [NSString stringWithFormat:@"insert into members (memberName, memberAmount,shareFlag) values(\"%@\", \"%f\",%d)",member.memberName,member.amount,[[NSNumber numberWithBool:member.shareFlag]intValue]];
    const char *insert_stmt = [insertSQL UTF8String];
    sqlite3_prepare_v2(database, insert_stmt,-1, &statement, NULL);
    if(sqlite3_step(statement) == SQLITE_DONE)
    {
        NSInteger lastRowId = sqlite3_last_insert_rowid(database);
        member.memberId = lastRowId;
        NSLog(@"inserted member id = %ld",lastRowId);
        NSLog(@"member is added");
    }
    sqlite3_finalize(statement);
    statement = nil;
}
sqlite3_reset(statement);
sqlite3_close(database);
return 0;

}

【问题讨论】:

标签: ios objective-c sqlite


【解决方案1】:

当 sqlite 已经在处理另一条语句并且您正在尝试执行另一条语句时,会出现此错误。因此,在您完成语句之前,数据库将被锁定。

了解更多信息。阅读:SQLite Exception: SQLite Busy

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多