如何在SQLiteDatabase原始查询绑定中设置数据类型?

时间:2011-11-04 09:56:36

标签: android sql sqlite casting

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中找不到任何适当的方法。

1 个答案:

答案 0 :(得分:2)

我现在意识到这是一个老问题,但你应该在生成的SQLiteProgram类上使用compileStatement后跟bindLong。这是Google为人们提供足够智能的方式,可以使用SQL进行额外的推送来编译语句以获得更好的性能。