gpt4 book ai didi

java - Android SQLite 使用 WHERE 子句不返回任何结果

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:14 26 4
gpt4 key购买 nike

我正在运行下面的 sqlite 查询,我知道这不是最好的方法,但我现在只是想让它工作。

如果我运行这两个查询,我会得到结果。

                Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1'", null);
Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE country='"+ countryID +"'", null);

但是如果我将这两个 where 子句结合起来,我将得不到任何结果。我是不是看得太简单了?

                    Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1' AND country='"+ countryID +"'", null);

事实证明,我应该考虑这与处于可扩展 ListView 中有关。下面是嵌套查询的完整代码。奇怪的是 countryID 总是输出 1,但是当您点击不同的组时,会列出正确的国家/地区。

           protected Cursor getChildrenCursor(Cursor groupCursor) {
String countryID = Integer.toString(groupCursor.getInt(0));
SQLiteDatabase checkDB = null;
checkDB = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY);

Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1' AND countries='"+ countryID +"'", null);


String test = "";
if(value.moveToFirst())
test = value.getInt(0) + ": " + value.getString(1);
while(value.moveToNext()){
test += ";" + value.getInt(0) + ": " + value.getString(1);
}
checkDB.close();
return value;
}

最佳答案

您的查询没有问题,您得到的结果也完全有效。考虑以下情况:

table:
| open | country |
_____________________________
| 0 | <your country id> |
| 1 | <another id> |

那么您的前两个查询确实会返回一些结果,但您的第三个查询不会。检查您的数据,并确保您确实有同时具有 open == 1 和正确国家/地区 ID 的行。

如果您希望从前两个查询中的其中一个返回所有行,那么您应该将您的AND 转换为OR .您将获得前两个查询的组合结果(在我上面的示例表中,两行)

Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1' OR country='"+ countryID +"'", null);

关于java - Android SQLite 使用 WHERE 子句不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137179/

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