数组(arrayBottleID3)具有可变数量的INT值。我想返回(结果/ arrayBottleNames)以返回结果。
arrayBottleID3可能有3个INT值,我不想做3个不同的查询语句。我不知道有什么值或有多少arrayBottleID3。
arrayBottleID3可以具有1或100个INT值。
下面不起作用。我收到错误或它不返回任何东西。
我只是不知道使用withArugmentsInArray的确切语法是什么。
我知道不是.. bottleID =吗?或bottleID(?)。
有人可以给我举个例子吗?
[self OpenDB]
results = [database executeQuery:@"SELECT friendlyname FROM Inventory WHERE bottleID = ?" withArgumentsInArray:@[arrayBottleID3]];
while([results next])
{
[arrayBottleNames addObject:[results stringForColumn:@"friendlyname"]];
}
[database close];
NSLog(@"count %d", [arrayBottleNames count]);
NSLog(@"Names: %@",arrayBottleNames);
最佳答案
您的SQL应该是:
SELECT friendlyname FROM Inventory WHERE bottleID IN (?, ?, ?)
数组中的每个元素都需要1个
?
,因此您应该执行以下操作:NSMutableArray *placeHolders = [NSMutableArray arrayWithCapacity:[sourceArray count]];
for (int i=0; i<[sourceArray count]; i++) {
[placeHolders addObject:@"?"];
}
NSString *placeHolderString = [placeHolders componentsJoinedByString:@", "];
NSString *query = [NSString stringWithFormat:@"SELECT * FROM MyTable WHERE myField IN (%@)", placeHolderString];
FMResultSet *rs = [db executeQuery:query withArgumentsInArray:sourceArray];
关于objective-c - FMDB-使用值数组的Select语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21297266/