objective-c - iOS SQLite FMDB 事务.. 正确用法?

标签 objective-c ios sqlite fmdb

我将尝试使用带有 FMDB SQLite iOS 包装器的事务。

文档在交易方面有些含糊,但通过快速查看一些功能,我得出了以下逻辑:

[fmdb beginTransaction];
    // Run the following query
    BOOL res1 = [fmdb executeUpdate:@"query1"];
    BOOL res2 = [fmdb executeUpdate:@"query2"];

if(!res1 || !res2) [fmdb rollback];
else [fmdb commit];

最佳答案

您还可以使用 FMDatabaseQueue 来处理您的事务,它是 fmdb 的一部分:

[queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
    [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]];
    [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]];
    [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]];

    if (whoopsSomethingWrongHappened) {
        *rollback = YES;
        return;
    }
    // etc…
    [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]];
}];

Documentation

关于objective-c - iOS SQLite FMDB 事务.. 正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580259/

相关文章:

iphone - 获取组列表用户 Yammer Rest Services

iOS NSDate 获取时区特定日期?

ios - TabBar 项目本地化

ios - 如何处理 iOS SQLite 中的重音字符?

c# - Unity 5.5.6f1 - native 插件不起作用,错误 DllNotFoundException

ios - 如何将字段从 NSManagedObject 传递到 Controller 以对其进行修改

ios - 按顺序显示编辑的NSString

ios - 如何在 iOS 中将多个 UIImage 添加到一个基本 UIImage

ios - 解析.com : How to properly check if a field is empty?

python - 使用 Python 比较两个 sqlite 数据库