Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android SQLite使用WHERE子句不返回任何结果_Java_Android_Sqlite - Fatal编程技术网

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

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

我运行了下面的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);
事实证明,我应该认为这与处于可扩展的列表视图中有关。下面是嵌套查询的完整代码。奇怪的是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);