【问题标题】:Iterate through a ResultSet outside of a Transaction?遍历事务之外的结果集?
【发布时间】:2018-02-22 18:36:42
【问题描述】:

我有一些看起来像这样的代码:

__block FMResultSet *s;
[databaseQueue inDatabase:^(FMDatabase * _Nonnull db) {
    s = [db executeQuery: @"SELECT * session;"];
}];

while ([s next]){
    //convert the row into a Session object.
    [databaseQueue inDatabase:^(FMDatabase * _Nonnull db) {
        [db executeUpdate:@"UPDATE session ...", arg1, arg2];
    }];
}

这样好吗?还是我需要在第一个 inDatabase 块内移动 while 循环?

我正在使用 FMDB 和 Objective C,但我猜这样的东西在大多数数据库包装器中都是标准的。

【问题讨论】:

    标签: objective-c sqlite fmdb


    【解决方案1】:

    经过更多测试,我能够回答我自己的问题。当我尝试上面概述的内容时收到警告:

    警告:在执行 [FMDatabaseQueue inDatabase:] 后,周围至少有一个打开的结果集

    所以我猜你可以做到,因为我确实得到了结果。但至少fmdb,不喜欢这个主意……

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 2017-10-23
      • 2019-02-18
      • 1970-01-01
      • 2020-07-12
      • 2014-09-30
      • 2012-06-05
      • 1970-01-01
      相关资源
      最近更新 更多