android - 如何在 SQLiteDatabase 原始查询绑定(bind)中设置数据类型?

标签 android sql sqlite casting

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/

相关文章:

c - 链接 sqlite C 时出错

Python-Sqlite-OperationalError : near "s": syntax error

android - 布局相互叠加

sql - 加入Apache Hive 0.14更新和删除查询

使用 BOOL 列创建 TABLE 时出现 MySQL 错误

javascript - 如何从 asp 页面将表的内容或 sql 查询的结果发送到剪贴板?

sqlite - 外键约束不适用

android - 如何找到 gradle 使用的是哪个 checkstyle 版本?

android - 如何在android中动画绘制圆弧

android - 如何使用 livedata 选择房间?