下面的方法针对 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];
}
在数据库中,有多个记录包含 flds 中的每个键。当该方法执行时,它会获取包含 flds 中第一个键的所有记录,但仅获取包含 flds 中每个后续键的第一个记录。我不明白为什么 flds 中的第一个键获取正确数量的记录,但后续键没有。
在此先感谢您的帮助!