1

以下は、データベース内のレコードを更新するための私のコードです...

-(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 !!

4

1 に答える 1