【问题标题】:WHERE clause does not work, does not return the desired valuesWHERE 子句不起作用,不返回所需的值
【发布时间】:2021-04-25 16:30:47
【问题描述】:

看看我的请求。我明确指定了参数,但请求没有返回正确的结果。 我知道这个问题有很多话题,但我还没有看到像我这样的请求。 请帮忙。

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));

这是我的输出:

【问题讨论】:

  • @Angel Koh,ty,但我仍然得到空值
  • @Angel Koh,是的,你是对的,现在我得到一个空列表,但还是?
  • 不应该像 name = 'loh' 而不是 " ?
  • @Angel Koh,不,我关闭了所有东西 - 它没有帮助
  • @javdromero,没有区别

标签: java android sqlite


【解决方案1】:

找到错误。

你在打电话

if (queryt2.moveToFirst()) {
        while (queryt2.moveToNext()) { 
    ...

这会将您的光标移动到第二个位置(索引 1)

即如果您将代码更改为“where name in ('loh', 'fju');”使用现有代码,您应该只得到一个结果,而不是两个。

你可以试试

 queryt2.moveToFirst();
 while(!queryt2.isAfterLast()) {
    ...
    queryt2.moveToNext();
 }
     

还记得在使用后关闭光标。 (或使用 try-with-resources)

【讨论】:

  • 也可以跳过moveToFirst(),直接使用while(q.moveToNext())。光标在查询后立即自动位于第一个位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2015-01-27
  • 2014-01-26
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多