Sqlite3更新查询无法在ios应用程序中运行

时间:2013-06-26 12:08:03

标签: ios database sqlite

我试图在点击按钮时更新我的​​表格列中的一个。

问题是代码没有给出任何异常,但它没有更新表。

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

更新db的代码如下。

@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 {

}

欢迎任何建议。 : - )

1 个答案:

答案 0 :(得分:3)

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

if (sqlite3_step(compiledStatement) != SQLITE_DONE)
    NSLog(@"%s: step error: %s", __FUNCTION__, sqlite3_errmsg(database));