这可以从我的Android
SQLite
数据库返回所有长度超过10个字符的字符串:
cursor = database.query(TABLE_NAME, mColumns, "length(word) > 10",
null, null, null, null);
为什么不这样,什么都不返回?
cursor = database.query(TABLE_NAME, mColumns, "length(word) > ?",
new String[]{"10"}, null, null, null);
第四个参数将?
中的每个where
定义为String
数组的元素,因此?
应替换为字符串"10"
答案 0 :(得分:1)
问题是SQLite只会将参数绑定为字符串。 所以,是的,你的参数被绑定为“10”,而不是10。
在大多数其他数据库中你不会遇到这个问题,但SQLite会做一些奇怪的事情,这只是其中之一。
所以,我只是选择第一个表格。 如果你实际上是从输入中获取一个int参数,那么我将验证(在代码中)它是一个在预期范围内的有效int,然后只是在代码中构建sql语句,直接附加int参数,而不是绑定它