Java WHERE子句不起作用,不返回所需的值
看看我的要求。我显式地指定了参数,但是请求没有返回正确的结果。 我知道有很多关于这个问题的话题,但我没有看到像我这样的请求。 请帮忙Java WHERE子句不起作用,不返回所需的值,java,android,sqlite,Java,Android,Sqlite,看看我的要求。我显式地指定了参数,但是请求没有返回正确的结果。 我知道有很多关于这个问题的话题,但我没有看到像我这样的请求。 请帮忙 items = new ArrayList<>(); items_test = new ArrayList<>(); db = getBaseContext().openOrCreateDatabase("budget_app.db", MODE_PRIVATE,
items = new ArrayList<>();
items_test = new ArrayList<>();
db = getBaseContext().openOrCreateDatabase("budget_app.db", MODE_PRIVATE,
null);
//
Cursor queryt = db.rawQuery("SELECT * FROM budget;", null);
if (queryt.moveToFirst()) {
while (queryt.moveToNext()) {
String type = queryt.getString(0);
String name = queryt.getString(1);
String date = queryt.getString(2);
Integer value = queryt.getInt(3);
items_test.add(0, name);
}
}
Log.d("Check", String.valueOf(items_test));
Cursor queryt2 = db.rawQuery("SELECT * FROM budget WHERE name = \"loh\"", null);
if (queryt2.moveToFirst()) {
while (queryt2.moveToNext()) {
String type = queryt2.getString(0);
String name = queryt2.getString(1);
String date = queryt2.getString(2);
Integer value = queryt2.getInt(3);
items_test2.add(0, name);
}
}
Log.d("Check", String.valueOf(items_test2));
items=newarraylist();
items_test=new ArrayList();
db=getBaseContext().openOrCreateDatabase(“budget\u app.db”,MODE\u PRIVATE,
无效);
//
游标queryt=db.rawQuery(“从预算中选择*”,null);
if(queryt.moveToFirst()){
while(queryt.moveToNext()){
字符串类型=queryt.getString(0);
String name=queryt.getString(1);
字符串日期=queryt.getString(2);
整数值=queryt.getInt(3);
测试项添加(0,名称);
}
}
Log.d(“检查”,String.valueOf(items_test));
游标queryt2=db.rawQuery(“从预算中选择*,其中名称=\“loh\”,null);
if(queryt2.moveToFirst()){
while(queryt2.moveToNext()){
字符串类型=queryt2.getString(0);
String name=queryt2.getString(1);
字符串日期=queryt2.getString(2);
整数值=queryt2.getInt(3);
项目2.add(0,名称);
}
}
Log.d(“检查”,String.valueOf(items_test2));
以下是我的输出:
找到了错误
你在打电话吗
if (queryt2.moveToFirst()) {
while (queryt2.moveToNext()) {
...
这会将光标移动到第二个位置(索引1)
i、 e.如果您将代码更改为“where name in('loh','fju');”您应该只得到一个结果,而不是使用现有代码得到两个结果
相反,你可以试试看
queryt2.moveToFirst();
while(!queryt2.isAfterLast()) {
...
queryt2.moveToNext();
}
还记得在使用后关闭光标。(或使用资源试用)@Angel Koh,ty,但我仍然可以null@AngelKoh,是的,你是对的,现在我得到了一个空列表,但仍然?它不应该像name='loh'不带“@Angel Koh,不,我关闭了所有东西-它没有帮助@javdromero,没有区别你也可以跳过moveToFirst(),使用while(q.moveToNext())直接。光标在查询后立即自动位于第一个位置。