在事务之外迭代 ResultSet?
Iterate through a ResultSet outside of a Transaction?
我有一些代码如下所示:
__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];
}];
}
这样可以吗?或者我是否需要将 while 循环移动到第一个 inDatabase
块内?
我正在使用 FMDB 和 objective C,但我猜像这样的东西是大多数数据库包装器的标准。
经过更多测试后,我能够回答我自己的问题。当我尝试上面概述的内容时收到警告:
Warning: there is at least one open result set around after performing [FMDatabaseQueue inDatabase:]
所以我猜你 可以 做到,因为我确实得到了结果。但至少 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];
}];
}
这样可以吗?或者我是否需要将 while 循环移动到第一个 inDatabase
块内?
我正在使用 FMDB 和 objective C,但我猜像这样的东西是大多数数据库包装器的标准。
经过更多测试后,我能够回答我自己的问题。当我尝试上面概述的内容时收到警告:
Warning: there is at least one open result set around after performing [FMDatabaseQueue inDatabase:]
所以我猜你 可以 做到,因为我确实得到了结果。但至少 fmdb,不喜欢这个主意...