ios - Objective C,SQLite,创建更新语句时出错。不是错误

标签 ios objective-c sqlite sql-update

这是我第一次遇到 SQLITE 中的 UPDATE 语句。根据我的发现,我想出了这个方法,但是,它不起作用)语句本身工作正常,我已经检查过了。由于某种原因,result 和 SQLITE_OK 的值等于 0。那么,到底是哪里出了问题呢?谢谢。

- (BOOL) archiveArticle:(Article *) article
{
    NSString *sql = [NSString stringWithFormat:@"UPDATE UserArticle SET archived = ? WHERE article_id=? AND user_id=?"];

    sqlite3_stmt *update;
    int result = sqlite3_prepare_v2(self.db, [sql UTF8String], -1, &update, NULL);
    NSLog(@"archiveArticle: Before IF %d %d",result, SQLITE_OK);
    if (result == SQLITE_OK){
        NSLog(@"archiveArticle: Article was archived!");
        return true;
    }else{
        NSLog(@"archiveArticle: Error while creating update statement. %s", sqlite3_errmsg(self.db));
        return false;
    }
    sqlite3_bind_int(update, 1, 1);

    sqlite3_bind_int(update, 2 , article.article_id);

    sqlite3_bind_int(update, 3 , 16);


    char* errmsg;
    sqlite3_exec(self.db, "COMMIT", NULL, NULL, &errmsg);

    if(SQLITE_DONE != sqlite3_step(update))
        NSLog(@"Error while updating. %s", sqlite3_errmsg(self.db));

    sqlite3_finalize(update);
    return false;
}

最佳答案

问题在于这部分代码:

if (result == SQLITE_OK){
        NSLog(@"archiveArticle: Article was archived!");
        return true;
    }else{
        NSLog(@"archiveArticle: Error while creating update statement. %s", sqlite3_errmsg(self.db));
        return false;
    }

您正在从该方法返回,因此不会执行剩余的代码。所以

sqlite3_exec(self.db, "COMMIT", NULL, NULL, &errmsg);

不会工作,数据也不会更新。

关于ios - Objective C,SQLite,创建更新语句时出错。不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24326854/

相关文章:

ios - 如何通过单击不同的单元格将数据从一个 uitableview 传递到多个 Controller

objective-c - 将 UIImage 转换为 NSData

iphone - 解析存储在 iPhone 应用程序的文档目录中的 XML 文件

ios - 使用 AFIncrementalStore 和 NSFetchedResultsController 的死锁

ios - 用于启用推送通知的自定义对话框 (iOS)

objective-c - 如何在 iPhone 中执行延迟测试

iphone - 加载到CoreData

java - 每次我打开新 Activity 时,Android SQLite 数据库似乎都会被清除

java - 通过 SQLite 数据库条目填充设置变量

ios - 不需要导入 MapKit.framework?