iphone - sqlite3 and fmdb nested FMResultSet is possible? -
i'm trying iterator through master detail sort of tables , i'd populate master/detail structures go. apparently when nest result sets bad access exception:
fmdatabase *db = self.database; [db open]; db.traceexecution = yes; db.logserrors = yes; fmresultset *rs = [db executequery:@"select group_id, label main.preference_group order 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 main.preference group_id = ? order 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];
in rs2 (second result set) exec_bad_access within fmdatabase class.
is restriction of sqlite3/fmdb or doing wrong here?
i found did wrong. passing int part of second query. had convert nsnumber:
fmresultset *rs2 = [db executequery:@"select pref_id, label, value main.preference group_id = ? order pref_id", [nsnumber numberwithint:pg.group_id], nil];
so means, yes, sqlite3/fmdb support nested queries! :-)
Comments
Post a Comment