gpt4 book ai didi

java - 当 SQLiteDatabase.rawQuery() 工作正常时,SQLiteDatabase.query() 出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:13 25 4
gpt4 key购买 nike

我在 Android 中查询 SQLITE 数据库时遇到问题。我有一个名为“重置”的表,其中包含一些值。目前我只有一篇文章。

reset_timestamp | interval
1479442048 | 5

这是我试图执行的查询。但是,当我调用cursor.getCount() 时,它返回零结果。我要执行的查询是:

SELECT reset_timestamp FROM resets WHERE (reset_timestamp=1479442048);

我真的不想使用 rawQuery()。我想使用查询()。这是我的查询语句。

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() 做错了什么?

最佳答案

"1479442048" 是一个字符串(您甚至在它前面写了 String)。字符串和数字不相等。

query 函数仅支持字符串参数,因此您必须将字符串转换回数字:

query(..., "reset_timestamp=CAST(? AS INT)", ...);

或者,将号码直接插入查询中:

query(..., "reset_timestamp=1479442048", null, ...);

关于java - 当 SQLiteDatabase.rawQuery() 工作正常时,SQLiteDatabase.query() 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com