我有问题在Android中查询我的SQLITE数据库。我有一个名为“重置”的表,其中包含一些值。目前我只有一个条目。
reset_timestamp | interval
1479442048 | 5
这是我试图执行的查询。但是,当我调用cursor.getCount()时,它返回零结果。我想要执行的查询是:
SELECT reset_timestamp FROM resets WHERE (reset_timestamp=1479442048);
我真的不想使用rawQuery()。我想使用query()。这是我的查询声明。
SQLiteDatabase db = new PowerDbHelper(this).getWritableDatabase();
String[] resetsQueryColumns = {"reset_timestamp"};
String[] resetsQuerySelectArgs = {"1479442048"};
Cursor cursor = db.query("resets", resetsQueryColumns, "reset_timestamp=?",
resetsQuerySelectArgs, null, null, null);
但是,getCount()返回0。另一方面,这很好,并返回我的结果
cursor = db.rawQuery("select reset_timestamp from resets where (reset_timestamp=1479442048)", null);
和getCount()返回1,我想要的。在'?'周围加上引号给了我
java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range
我对query()做错了什么?
答案 0 :(得分:0)
"1479442048"
是一个字符串(你甚至在它前面写了String
)。字符串和数字不相等。
query
函数仅支持字符串参数,因此您必须将字符串转换回数字:
query(..., "reset_timestamp=CAST(? AS INT)", ...);
或者,将数字直接插入查询中:
query(..., "reset_timestamp=1479442048", null, ...);