gpt4 book ai didi

iphone - sqlite3 和 fmdb 嵌套 FMResultSet 是可能的吗?

转载 作者:IT王子 更新时间:2023-10-29 06:29:33 24 4
gpt4 key购买 nike

我正在尝试遍历主要详细信息类型的表,并且我想在进行时填充主要/详细信息结构。显然,当我嵌套结果集时,我得到了 BAD Access 异常:

FMDatabase *db = self.database;
[db open];
db.traceExecution = YES;
db.logsErrors = YES;
FMResultSet *rs = [db executeQuery:@"select group_id, label from main.preference_group order by group_id"];
while ([rs next])
{
PreferenceGroup *pg = [[PreferenceGroup alloc] init];
pg.group_id = [rs intForColumn:@"group_id"];
pg.label = [rs stringForColumn:@"label"];
pg.translatedLabel = NSLocalizedString(pg.label, nil);
NSMutableArray * prefs = [[NSMutableArray alloc] init];
[prefGroups addObject:prefs];
FMResultSet *rs2 = [db executeQuery:@"select pref_id, label, value from main.preference where group_id = ? order by pref_id", pg.group_id, nil];
while ([rs2 next])
{
Preference * pref = [[Preference alloc] init];
pref.group_id = pg.group_id;
pref.pref_id = [rs2 intForColumn:@"pref_id"];
pref.label = [rs2 stringForColumn:@"label"];
pref.value = [rs2 stringForColumn:@"value"];
pref.translatedLabel = NSLocalizedString(pref.value, nil);
[prefs addObject:pref];
}
[rs2 close];
}
[rs close];
[db close];

在 rs2(第二个结果集)中,我在 FMDatabase 类中获得了 EXEC_BAD_ACCESS。

这是 sqlite3/fmdb 的限制还是我在这里做错了什么?

最佳答案

我刚刚发现我做错了什么。我在第二个查询中传递了一个 int。我必须将它转换为 NSNumber:

            FMResultSet *rs2 = [db executeQuery:@"select pref_id, label, value from main.preference where group_id = ? order by pref_id", [NSNumber numberWithInt:pg.group_id], nil];

所以这意味着,是的,sqlite3/fmdb 确实支持嵌套查询! :-)

关于iphone - sqlite3 和 fmdb 嵌套 FMResultSet 是可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10913517/

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