Java Android SQLite使用WHERE子句不返回任何结果
我运行了下面的sqlite查询,我知道这并不是最好的方法,但我现在只是想让它工作起来 如果我运行这两个查询,就会得到结果Java Android SQLite使用WHERE子句不返回任何结果,java,android,sqlite,Java,Android,Sqlite,我运行了下面的sqlite查询,我知道这并不是最好的方法,但我现在只是想让它工作起来 如果我运行这两个查询,就会得到结果 Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1'", null); Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE country='"+ countryI
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);
事实证明,我应该认为这与处于可扩展的列表视图中有关。下面是嵌套查询的完整代码。奇怪的是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;
}
查询本身没有问题,但是您确定有行同时具有open=1和country=whateverthevalue的列吗?如果没有,你当然不会得到任何结果
运行“adb shell”,用sqlite3打开数据库文件并在那里运行查询以进行检查。您的查询很好,得到的结果完全有效。考虑以下情况:
table:
| open | country |
_____________________________
| 0 | <your country id> |
| 1 | <another id> |
这听起来可能很傻,但最好检查您正在查询的countryID是否确实存在open=1的行。请尝试此checkDb.query(table,null,“open='1'和country='”+countryID+“'”,null,null,null,null);谢谢你的建议@LewisNorton发现countryID总是返回1,而不是像9这样的值。但奇怪的是,当我删除open子句时,查询就起作用了。它是expandablelistview的一部分。我将更新我的帖子。谢谢你给我指明了正确的方向
Cursor value = checkDB.rawQuery("SELECT * FROM table WHERE open ='1' OR country='"+ countryID +"'", null);