以下方法针对sqlite3数据库运行。它旨在获取与作为参数(flds)传递的数组中的每个外键匹配的记录的所有主键。
- (NSArray*) columnPrimaryKeysForFields:(NSArray*)flds
{
NSMutableArray* retval = [[NSMutableArray alloc] init];
NSString* query = @"SELECT ID FROM Pages WHERE FieldID = ? ORDER BY ID";
sqlite3_stmt* statement;
if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK)
{
for (NSNumber* fieldID in flds)
{
sqlite3_bind_int64(statement, 1, (int)[fieldID longValue]);
while (sqlite3_step(statement) == SQLITE_ROW)
{
[retval addObject:[NSNumber numberWithInteger:sqlite3_column_int(statement, 0)]];
}
}
sqlite3_finalize(statement);
}
else
{
NSLog(@"SQL PREPARE columnPrimaryKeysForFields failed");
}
return [NSArray arrayWithArray:retval];
}
在数据库中,有多个记录包含fld中的每个键。当该方法执行时,它将获取包含fld中第一个键的所有记录,但仅包含包含fld中每个后续键的第一个记录。我无法弄清楚为什么fld中的第一个键获取正确数量的记录但后续键不能。
提前感谢您的帮助!