sqlite没有更新我的数据库的iOS

我正在尝试更新我的sqlite数据库,但这段代码不适合我。 请帮我找出这个有什么问题。

-(BOOL)StoreFavourite:(NSString*)fav :(int)DuaId { NSString* mydbpath=[self pathfinder]; const char *dbpath=[mydbpath UTF8String]; if(sqlite3_open(dbpath,&database )==SQLITE_OK) { NSString *query = [NSString stringWithFormat:@"UPDATE Dua SET favourite=\'%@\' WHERE dua_id=%d ",fav,DuaId]; const char *query_statement=[query UTF8String]; if(sqlite3_prepare_v2(database, query_statement, -1, &statement, NULL)==SQLITE_OK) { while(sqlite3_step(statement) == SQLITE_DONE) { return YES; } sqlite3_finalize(statement); } } return YES; } 

请检查你的“mydbpath”放NSLog 。我认为你给出了不正确的path。
也尝试使用:

 NSString *query = [NSString stringWithFormat:@"UPDATE Dua SET favourite='%@' WHERE dua_id=%d ",fav,DuaId]; 

这里有一些原因是由于sqlite3_prepare_v2!= SQLITE_OK:

1.表格可能不会出现在数据库中。

2.错误的查询语句。

错误的列名到查询语句中。

你可以使用错误语句find确切的问题,方法如下:

  NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)) 

请尝试以下方式

 -(BOOL)StoreFavourite:(NSString*)fav :(int)DuaId { sqlite3_stmt *statement=nil; NSString *mydbpath=[self pathfinder]; NSString *query; if(sqlite3_open([mydbpath UTF8String],&database) == SQLITE_OK) { query = [NSString stringWithFormat: @"update Dua set favourite=? where dua_id=?"]; if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK) { sqlite3_bind_int(statement, 2, DuaId); sqlite3_bind_text(statement, 1, [fav UTF8String], -1, SQLITE_TRANSIENT); if(sqlite3_step(statement)) { return YES; } else { return NO; } } sqlite3_finalize(statement); } sqlite3_close(database); return NO; }