以下は、データベース内のレコードを更新するための私のコードです...
-(BOOL) addScoreInDatabase:(classname *)objGames
{
BOOL success;
sqlite3 *database;
const char *dbpath = [self.databasePath UTF8String];
if(sqlite3_open(dbpath, &database) == SQLITE_OK)
{
sqlite3_stmt *statement;
NSData *strJson = [objGames getJSON];
NSString *strContent = [[[[NSString alloc]
initWithData:strJson encoding:NSUTF8StringEncoding] stringByReplacingOccurrencesOfString:@"\\" withString:@""]stringByReplacingOccurrencesOfString:@"null" withString:@"\"\""];
NSLog(@"strcom %@",strContent);
NSString *query = [NSString stringWithFormat:@"UPDATE gamescore SET data ='%@' WHERE id = 1",strContent];
NSLog(@"query %@",query);
const char *sqlStatement = [query UTF8String];
if(sqlite3_prepare_v2(database, sqlStatement, -1, & statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_DONE)
{
success = TRUE;
}
else
{
success = FALSE;
}
sqlite3_exec(database, "VACUUM;", 0, 0, nil);
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
return success;
}
if (sqlite3_step(statement) == SQLITE_DONE) ループの中には入りません
結果のクエリは
UPDATE gamescore SET data ='{
"title" : "pacman",
"time" : "55",
"score" : "200",
"level" : "1"
}' WHERE id = 1
そして、Sqlite Managerでこのクエリを実行すると、レコードは更新されず、代わりに次のように表示されます
私の記録を更新するのを手伝ってくれる人はいますか?!..Thanks !!