Sqlite3更新查询在ios应用程序中不工作

Sqlite3更新查询在ios应用程序中不工作,ios,database,sqlite,Ios,Database,Sqlite,我试图在单击按钮时更新表中的一列 问题是代码没有给出任何异常,但它没有更新表 当视图控制器再次加载时,它将显示旧值,而不是更新的值 更新数据库的代码附在下面 @try { if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { NSString *sqlStatement = @"UPDATE messagesTable SET Favorite = 1 where Messag

我试图在单击按钮时更新表中的一列

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

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

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

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

}
欢迎提出任何建议-

您没有调用执行更新的sqlite3\u步骤。在sqlite3_准备完成之后和sqlite3_完成之前,您需要以下内容:

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

这是一个需要解决的简单问题。如果sqlite函数没有返回sqlite\u OK,则报告从sqlite3\u errmsg返回的错误消息。这就是它的目的,告诉你哪里出了问题。是的,从SQLite调用捕获异常没有真正的意义。一切都是用返回码和错误码来完成的;SQLite API是基于C而不是Objto-C的,所以它说它会抛出ObjyE-C异常或C++异常呢?