【发布时间】:2013-04-17 03:26:02
【问题描述】:
我在我的 sqlite 数据库中执行 sql 查询,如下所示:
NSString *queryString = [NSString stringWithFormat:@"SELECT * FROM PROFILE WHERE no = '%@'", txtNo.text];
但我需要查询不区分大小写。我该怎么做?
需要一些指导。
【问题讨论】:
-
就像 rmaddy 说的那样,在输入和列上都使用
upper函数,或者使用LIKE运算符而不是=(不过,如果使用LIKE,你必须小心关于通配符,输入字符串中的%)。 -
除了 rmaddy 对 SQL 注入攻击的观察之外,一个更实际的问题是,如果
txtNo具有类似 "Joe's Bar & Grill" 的值,其中撇号将被解释为结束引号WHERE子句。sqlite3_bind_text绝对是要走的路。或者像FMDB 这样的库给你像executeQuery这样的方法,它们接受像stringWithFormat这样的参数,并在幕后为你处理sqlite3_bind_text的血腥细节(但你仍然使用?占位符)。