2015-10-15 162 views
0

我用FMDB中的参数编写了一个查询使用?标记符号。我想要获取列表中有任何信息的用户的详细信息(希望我可以在sql中的“in”语句中给出由逗号分隔的不同信息)。由于我的论点有特殊的符号,它是抛出错误。如何摆脱那里的特殊符号。我尝试了不同的方法,但没有工作尚未转义FMDB中的特殊字符iOS查询

我的代码是这样的:

FMResultSet *results = [db executeQuery:@"select details from user where info in(?)",infoList]; 
while([results next]) 
    {...} 

信息是一个字符串,通过commas.For例如分隔不同的字符串组合:

“C音符” ,'古巴导弹危机','cubbyhole','我爱露西','我是名人...让我离开这里!','Iacocca,Lee',' - iana',''常春藤联盟'

Thanks in a dvance

回答

4

除非只绑定一个值,否则不能使用?in子句。它不适用于值列表。

由于infoList是一个字符串值数组,因此一个选项是为列表中的每个值添加一个?

NSMutableString *query = [NSMutableString stringWithString:@"select details from user where info in ("]; 
for (NSInteger i = 0; i < infoList.count; i++) { 
    if (i) { 
     [query appendString:@","]; 
    } 
    [query appendString:@"?"]; 
} 
[query appendString:@")"]; 
FMResultSet *results = [db executeQuery:query withArgumentsInArray:infoList]; 
+0

感谢您的快速响应。这里的问题是,infoList是动态生成的,我不能说特殊符号可能会出现在哪里。它也可以在Array中使用,如果我们可以用其他方式处理。我看到一些函数,如'[db executeQuery:<#(NSString *)#> withArgumentsInArray:<#(NSArray *)#>]'.is在这种情况下可用吗? –

+0

我更新了答案,因为'infoList''是一个字符串数组。 – rmaddy

+0

我用格式:NSString检查。它工作正常。我会检查这一点,并让你知道。这么晚才回复很抱歉。 –