iPhone中的数据库被locking在sqlite中

你好朋友,我已经search了很多关于这个错误。 我发现像你一样的build议必须使用sqlite_finalize()语句,我使用它。 看看我的代码。

– (void)updatePostingsForLike:(NSString *)postingKey isLiked:(NSString *)isLiked {

[self initWithDB]; sqlite3_stmt *stmt; if(sqlite3_open([[self dbPath] UTF8String],&(db)) == SQLITE_OK) { NSString *str=[@"" stringByAppendingFormat:@"update posting set isLiked='%@' where postKey='%@'",isLiked,postingKey]; const char *sql=[str cStringUsingEncoding:NSUTF8StringEncoding]; int status; status= sqlite3_prepare_v2(db,sql, -1, &stmt, NULL); if(SQLITE_DONE != sqlite3_step(stmt)) { NSLog(@"%s",sqlite3_errmsg(db)); } sqlite3_finalize(stmt); [self closeConnection]; }} 

我遵循了所有规则。 我只能更新我的logging一次。 第一次只。 它第二次抛出错误。 应该是什么解决scheme? 我从最近两天就陷入了这个问题!

尝试这个,

 -(void) updatePostingsForLike:(NSString *)postingKey isLiked:(NSString *)isLiked { [self initWithDB]; sqlite3_stmt *statement; if(sqlite3_open([[self dbPath] UTF8String],&db) == SQLITE_OK) { NSString* query=[NSString stringWithFormat: @"update posting set isLiked='%@' where postKey='%@'",isLiked,postingKey]; const char *query_stmt = [query UTF8String]; if (sqlite3_prepare_v2(db, query_stmt, -1, &statement, NULL) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { sqlite3_column_text(statement, 0); } sqlite3_finalize(statement); } sqlite3_close(db); } }