【问题标题】:Retrieve count of data from SQLite in Android从 Android 中的 SQLite 检索数据计数
【发布时间】:2012-11-27 08:17:52
【问题描述】:

我在尝试提出计算“2”级中字母“B”数量的命令时遇到了一些麻烦。

_id|letter|level
0   A      1
1   A      1
2   B      1
3   A      2
4   B      2
5   A      2
6   B      2
7   B      2
8   B      2
9   B      2

这是迄今为止我在 DBAdapter 中的“代码”。

public long getNumberCorrect() {
        int i = 0;
        String query = "SELECT **NUMBER OF LETTER B** FROM table WHERE level = 2";
        Cursor  cursor = mDb.rawQuery(query,null);
        if (cursor.moveToFirst()) {
                 while (cursor.isAfterLast() != true) {

                  }
        }
        return i;

    }

理想情况下,上面的代码会返回 5,但我不知道用什么替换“NUMBER OF LETTER B”。

【问题讨论】:

    标签: java android mysql sqlite


    【解决方案1】:

    您是否尝试过使用count(*)

    Something like:
    String query = "SELECT count(*) FROM table WHERE level = 2 and letter='B'";
    Cursor  cursor = mDb.rawQuery(query,null);
    if (cursor.getCount() >0 && cursor.moveToFirst()) {
       i = cursor.getInt(1);
    }
    return i;
    

    【讨论】:

    • 不,不知道如何使用该命令。 (*) 让我失望。不知道我是在里面插入我的变量名还是什么。
    • @eghdk 您将能够使用:cursor.getInt(1) 检索计数结果
    • 我应该使用@android-developer 推荐的AS _lCount 吗?
    • @eghdk 你可以,但这不是强制性的。您可以进行原始查询并通过 id 使用 getInt。
    【解决方案2】:

    试试这个 ::

    SELECT count(*) FROM table WHERE level = 2 and letter='B'
    

    或者你可以

    SELECT count(id) FROM table WHERE level = 2 and letter='B'
    

    【讨论】:

    • *id有什么区别。
    • * 将计算所有行,这里的 id 是唯一的列名在这种情况下,两者都将返回相同的计数
    【解决方案3】:

    这是一个很好的要求:

    select count(*) from table where level=2 AND letter like 'B'
    

    【讨论】:

      【解决方案4】:

      编写以下查询

      String query = "SELECT COUNT(*) FROM table WHERE level = 2 AND letter='B'";
      

      【讨论】:

        【解决方案5】:

        你可以这样做:

        String sqlite = "SELECT count(_id) AS _lCount FROM table WHERE level = 2 and letter='B'";
        Cursor  cursor = mDb.rawQuery(query,null);
        if(cursor != null){
          if(cursor.getCount() > 0){
            cursor.moveToFirst();
            int count = cursor.getInt(cursor.getColumnIndex("_lCount"));
        
          }
        }
        

        这应该可以解决问题。 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-18
          • 2011-09-09
          • 1970-01-01
          • 1970-01-01
          • 2013-12-25
          • 2019-02-20
          相关资源
          最近更新 更多