SQLiteDatabase 中的参数 raw query函数被绑定(bind)为字符串,这给我带来了问题。
示例查询(绑定(bind) 50):
SELECT ? < 68
返回:0
SELECT min(?, 68)
返回:68
这样的结果是因为50
绑定(bind)为字符串,查询看起来像 SELECT '50' < 68 ;
返回 false
.
在运行时创建了复杂的查询,我必须使用 SQLiteDatabase.rawQuery
.
如何将数据绑定(bind)为Integer?
我找到了一个解决方案:
SELECT CAST( ? AS INTEGER ) < 68 ;
但它看起来很丑。还有别的办法吗?我在 Android API 中找不到任何合适的方法。
最佳答案
我意识到这是一个老问题了,但你应该使用 compileStatement 后跟 bindLong在生成的 SQLiteProgram 类上。这是 Google 让足够聪明的人使用 SQL 来编译语句以获得更好性能的额外插入力的方法。
关于android - 如何在 SQLiteDatabase 原始查询绑定(bind)中设置数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007458/