-4

我正在尝试在单击按钮时更新我的​​表格列之一。

问题是代码没有给出任何异常仍然没有更新表。

当视图控制器再次加载时,它会显示旧值而不是更新值。

更新数据库的代码附在下面。

@try {
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

        NSString *sqlStatement = @"UPDATE messagesTable SET Favorite = 1 where MessageID=";
        sqlStatement = [sqlStatement stringByAppendingString:msgId];

        NSLog(@"sql statement: %@", sqlStatement);



        const char *sql = [sqlStatement UTF8String];
        int result = sqlite3_prepare_v2(database, sql, -1, &compiledStatement, NULL);
        if(result != SQLITE_OK) {
            NSLog(@"Prepare-error #%i: %s", result, sqlite3_errmsg(database));
        }

                   // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);

    }


    sqlite3_close(database);


}
@catch (NSException *exception) {
    NSLog(@"Name: %@",exception.name);
    NSLog(@"Reason: %@",exception.reason);

}
@finally {

}

欢迎任何建议。:-)

4

1 回答 1

3

您没有调用sqlite3_step,它执行更新。在 之后sqlite3_prepare和之前sqlite3_finalize,您需要以下内容:

if (sqlite3_step(compiledStatement) != SQLITE_DONE)
    NSLog(@"%s: step error: %s", __FUNCTION__, sqlite3_errmsg(database));
于 2013-06-26T12:41:27.150 回答