ios FMDB SELECT NOT IN (?)
Posted
技术标签:
【中文标题】ios FMDB SELECT NOT IN (?)【英文标题】: 【发布时间】:2014-11-14 07:59:00 【问题描述】:我想检查一个 id 列表是否在数据库中。 这是我的代码...
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
NSString *string = [array componentsJoinedByString:@","];
FMResultSet * rs = [self.db executeQuery:@"SELECT id FROM FriendList WHERE id NOT IN (?)",string];
这是行不通的。只有当数组只有一个数字时才有效。
有人知道如何使用 FMDB 进行 SELECT NOT IN 吗?
谢谢!
【问题讨论】:
【参考方案1】:您需要在此处进行少量修改。
按照下面的代码。
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
NSString *components = [array componentsJoinedByString:@", "];
NSMutableString *valueString = [NSMutableString new];
NSMutableString *fieldString = [NSMutableString new];
[fieldString appendString:@"SELECT id FROM FriendList WHERE id NOT IN ("];
for (NSString *fielValue in array)
[fieldString appendString:@"?,"];
[valueString appendString:fielValue];
[fieldString replaceCharactersInRange:NSMakeRange([fieldString length] - 1, 1) withString:@")"];
NSString *normalString = [NSString stringWithString:fieldString];
fieldString = nil;
FMResultSet * rs = [self.db executeQuery:@"%@", normalString, components];
编辑:
根据您在 cmets 中提供的信息,我确实发现 sqlite
在您提供数组组件中的多个项目时无法编译字符串文字。我修改答案仍然是从您的角度来测试它是否有效?发表评论以获得确认。
【讨论】:
我已经测试过了。它在我身边工作。你有什么问题? 抱歉,我发现您的代码确实有效。但我数组中的对象实际上就像@“54633a47b51ed30aa5f6891e”。控制台显示“无法识别的令牌:“54656cdca7bc96aac023e6a3”。你知道这是为什么吗? 我猜id
表中的字段是INTEGER
。这是数组中的字符串值。你可以使用其他字段来存储数组值吗?
表中id字段为TEXT~~~
我明白了。因为这里的sqlite
无法识别字符串文字。我将为您提供编辑后的答案以上是关于ios FMDB SELECT NOT IN (?)的主要内容,如果未能解决你的问题,请参考以下文章