gpt4 book ai didi

ios - FMDB 在方法中排队读取查询

转载 作者:行者123 更新时间:2023-11-29 10:42:02 30 4
gpt4 key购买 nike

我想开始使用 FMDatabaseQueue 在我的应用程序中的不同线程中同时运行查询,但我不确定如何在一个方法中实现读取操作。我正在使用此处的示例:http://ccgus.github.io/fmdb/html/Classes/FMDatabaseQueue.html

我如何在方法中实现此代码段,以便它同步运行并返回结果?

FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath];

[queue inDatabase:^(FMDatabase *db) {
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]];
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]];
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]];

FMResultSet *rs = [db executeQuery:@"select * from foo"];
while ([rs next]) {
//…
}
}];

编辑:澄清一下,我想返回结果集或我自己填充的 NSArray

最佳答案

FMDatabaseQueue 已经同步运行。在返回结果方面,只要创建一个数组对象,然后返回结果即可:

FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath];
NSMutableArray *results = [NSMutableArray array];

[queue inDatabase:^(FMDatabase *db) {
if (![db executeUpdate:@"INSERT INTO myTable VALUES (?)", @(1)])
NSLog(@"%s: executeUpdate 1 error: %@", __PRETTY_FUNCTION__, [db lastErrorMessage]);
if (![db executeUpdate:@"INSERT INTO myTable VALUES (?)", @(2)])
NSLog(@"%s: executeUpdate 2 error: %@", __PRETTY_FUNCTION__, [db lastErrorMessage]);
if (![db executeUpdate:@"INSERT INTO myTable VALUES (?)", @(3)])
NSLog(@"%s: executeUpdate 3 error: %@", __PRETTY_FUNCTION__, [db lastErrorMessage]);

FMResultSet *rs = [db executeQuery:@"select * from foo"];
while ([rs next]) {
// just add your objects to the `results` array
}
[rs close];
}];

return results;

关于ios - FMDB 在方法中排队读取查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24070185/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com