2
私のアプリでは、データベースにアクセスする複数のスレッドがあります。私はSQLiteラッパーのFMDBを使用しました。[FMDatabaseQueue inDatabase:]の実行後に少なくとも1つのオープン結果が設定されているため、エラーが発生していますか?
FMDBが私にFMDBatabaseQueue経由のマルチスレッド処理を提供してくれると聞きました。
@property (nonatomic, strong) FMDatabaseQueue *queue;
_queue = [[FMDatabaseQueue alloc] initWithPath:path];
- (BOOL)deleteSchoolDatabase:(NSString *)name anduserId:(NSString*)studentId {
__block BOOL success = NO;
[self.queue inDatabase:^(FMDatabase *db) {
NSString *deleteStudentDBString = [NSString stringWithFormat:@"DELETE FROM user WHERE name=%@ AND studentId=%@",name,studentId,nil];
success = [db executeQuery:deleteStudentDBString];
NSAssert((![db hadError]), [db lastErrorMessage]);
if ([db hadError]) {
DebugLog(@"Error : %@", [db lastErrorMessage]);
success = NO;
}
}];
return success;
}
私は
[self.queue inDatabase:^(FMDatabase *db) {
//fetch details
}];
しかし、今、私は
Warning: there is at least one open result set around after performing [FMDatabaseQueue inDatabase:]
query: 'DELETE FROM user WHERE name='abc' AND studentId='12346';'
としてエラーを取得しています。すなわち、同様の取得のために形式上で使用しました:原因それに、私は以下のようにそれを使用している
以下のリンクもチェックアウトしました: https://groups.google.com/forum/#!topic/fmdb/oeu38he7UvQ
と私は一度やったセットを閉じていると思います。それでもエラーは発生しています。 これは1つのテーブルでのみ発生しています。他のテーブルでは、データベースからデータを削除することができます。
ありがとうございます。