SQLiteDatabase中的参数raw query函数绑定为字符串,它对我造成问题。如何在SQLiteDatabase原始查询绑定中设置数据类型?
实施例的查询(结合):
SELECT ? < 68
回报:0
SELECT min(?, 68)
回报:68
这样的结果是因为50
绑定为字符串和查询看起来像SELECT '50' < 68 ;
它返回false
。
经过在运行时创建的复杂查询,我必须使用SQLiteDatabase.rawQuery
。
如何将数据绑定为整数?
我找到了一个解决方案:
SELECT CAST(? AS INTEGER) < 68 ;
但它看起来丑陋。有没有其他方法?我在Android API中找不到任何适当的方法。
SQLiteDatabase.execSQL(sql,args)声明的唯一字节[],String,Long和Double的javadoc在bindArgs中受支持。它有助于使用“长”而不是“整数”?一些代码也减少了猜测:) –
Javadoc for'SQLiteDatabase.execSQL(sql,args)'说:'执行不是SELECT/INSERT/UPDATE/DELETE'的单个SQL语句。我需要SELECT。但问题在于使用不同于'String'的类型,不仅是Integer或Long。 – pawelzieba
哎呀,对不起,你是对的 - 它在全部大写的第一句中都这么说:( –