SQLiteDatabase raw query函数中的参数绑定为字符串,这会给我带来问题。
示例查询(绑定 50 ):
SELECT ? < 68
返回:0
SELECT min(?, 68)
返回:68
此类结果是因为50
绑定为String,查询看起来像SELECT '50' < 68 ;
,返回false
。
在运行时创建复杂的查询我必须使用SQLiteDatabase.rawQuery
。
如何将数据绑定为整数?
我找到了一个解决方案:
SELECT CAST( ? AS INTEGER ) < 68 ;
但它看起来很难看。还有其他方法吗?我在Android API中找不到任何适当的方法。
答案 0 :(得分:2)
我现在意识到这是一个老问题,但你应该在生成的SQLiteProgram类上使用compileStatement后跟bindLong。这是Google为人们提供足够智能的方式,可以使用SQL进行额外的推送来编译语句以获得更好的性能。