В моем приложении несколько потоков обращаются к базе данных. Я использовал SQLite-обертку FMDB.ошибка, так как после выполнения функции [FMDatabaseQueue inDatabase:] есть хотя бы один открытый результат.
Я слышал, что FMDB предоставляет мне возможность обрабатывать многопоточность через FMdatabaseQueue.
В связи с этим, я использовал его, как показано ниже:
@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
, и я думаю, что я закрываю набор, как только закончил. тем не менее, происходит ошибка. , и это происходит только для одной таблицы. В другой таблице можно удалить данные из базы данных.
Заранее спасибо.