数组(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/

10-11 20:26