ios - 无法更新数据库列 - Objective C

标签 ios objective-c sqlite

我正在尝试使用此函数更新表中的列:

-(void)updateID:(NSString*)ID{
    NSString *queryInsertAndUpdate =
    [NSString stringWithFormat:
     @"UPDATE mytable set ID = '%@' limit 1",ID];

    const char* query=[queryInsertAndUpdate UTF8String];
    sqlite3_stmt *stmt = nil;

    sqlite3_exec(_database, "BEGIN EXCLUSIVE TRANSACTION", 0, 0, 0);

    if (sqlite3_prepare_v2(_database, query, -1, &stmt, NULL) == SQLITE_OK) {
        if(sqlite3_step(stmt) == SQLITE_DONE) {
            NSLog(@"Query Executed");
        } else {
            NSLog(@"Query NOT Executed: %s", sqlite3_errmsg(_database));
        }
        sqlite3_finalize(stmt);

    }else{
        NSLog(@"Statement NOT Prepared: %s", sqlite3_errmsg(_database));
    }
}

当我运行这个函数时,一切正常,并且列得到更新。我知道这是因为我就特定表调用了数据库并检查了结果。问题是,当我调用从另一个类读取表条目的同一个函数时,我得到了不同的结果。

具体来说,当我打电话时:

AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
[appDelegate initViewController];

initViewController 中,我调用了读取表的同一函数,并在更新前获取了列的条目。

为什么会这样?如果需要,我可以提供更多代码。

最佳答案

如果你有一个“BEGIN EXCLUSIVE TRANSACTION”,那么你还需要有一个COMMIT TRANSACTION

关于ios - 无法更新数据库列 - Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53596431/

相关文章:

objective-c - UI 滚动时应用程序停止从套接字接收数据

ios - 自动布局在 iOS8 Xcode 6 中创建 GridView

python - 重击 : sqlite3: command not found

iphone - 创建一个随机事实应用程序

ios - 如何找出 UIScrollView 的滚动指示器的大小?

ios - 我们如何检测并保存 iPhone/iPad 触摸屏上写入的文本?

objective-c - Objective-C : How to create border effect around photos

ios - 从 localizable.string(意大利语)本地化 ios 中的 HTML 文本字符串文件

objective-c - 如何在进入前景时保留 UIScrollView 的框架?

android - 如何每天例行地用外部创建的新数据库替换 Android SQlite 数据库?