【发布时间】: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;
}
【问题讨论】:
-
为什么不为 SQLite 使用一些 ObjectiveC 库? github.com/ogres/SQLiteDatabase-class-for-iOS-Objective-C 或 github.com/ccgus/fmdb
-
@LalKrishna 请检查发布日期。我很久以前就找到了答案。
-
我知道,这是给谷歌员工的。我在谷歌上找到了这个问题,没有答案,我必须研究更多。所以我想这可能会对某人有所帮助。
-
在回答@LalKrishna 中发布此消息
标签: ios objective-c sqlite