在android我使用以下语句.
model = dataHelper.rawQuery("SELECT _id, engword, lower(engword) as letter FROM word WHERE letter >= 'a' AND letter < '{' AND engword LIKE '%" + filterText + "%'", new String[ {"_id","engword", "lower(engword) as letter"});
Run Code Online (Sandbox Code Playgroud)
它在扔 android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x132330
我的代码有什么问题?
dev*_*oid 40
正确的陈述是:
model = dataHelper.rawQuery("
SELECT _id, engword, lower(engword) as letter
FROM word W
HERE letter >= 'a'
AND letter < '{'
AND engword LIKE ? ORDER BY engword ASC
",
new String[] {"%" + filterText + "%"}
);
Run Code Online (Sandbox Code Playgroud)
ern*_*azm 22
您提供了3个参数,但?查询中没有.传递null而不是字符串数组作为第二个参数rawQuery或替换_id,engword并lower(engword) as letter在您的选择字符串中传递?
1)
model = dataHelper.rawQuery("SELECT ?, ?, ? FROM word WHERE letter >= 'a' AND letter < '{' AND engword LIKE '%" + filterText + "%'",new String[] {"_id","engword", "lower(engword) as letter"});
Run Code Online (Sandbox Code Playgroud)
2)
model = dataHelper.rawQuery("SELECT _id, engword, lower(engword) as letter FROM word WHERE letter >= 'a' AND letter < '{' AND engword LIKE '%" + filterText + "%'", null);
Run Code Online (Sandbox Code Playgroud)
编辑: 正如@Ewoks指出的那样,选项(1)是不正确的,因为预处理语句只能在WHERE子句中获取参数(?s).
| 归档时间: |
|
| 查看次数: |
25331 次 |
| 最近记录: |