在事务之外迭代ResultSet?

时间:2018-02-22 18:36:43

标签: objective-c sqlite fmdb

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

__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,但我的猜测是这样的东西在大多数数据库包装器中都是标准的。

1 个答案:

答案 0 :(得分:0)

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

  

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

所以我猜你可以这样做,因为我确实得到了结果。但至少fmdb,不喜欢这个想法...