【问题标题】:How To Use SQLite COUNT in Android to return number of rows如何在 Android 中使用 SQLite COUNT 返回行数
【发布时间】:2015-02-27 21:45:31
【问题描述】:

我想编写一个查询,将名为 DIRECTION 的列中字符串值为“left”的所有行加起来。接下来我要返还这笔款项。

在我的代码片段中,假设数据和数据库已建立。

这是原型:

public int getSumLeft() {
    String selectQuery =  "SELECT COUNT( "+TableData.TableInfo.DIRECTION+" ) WHERE "+TableData.TableInfo.DIRECTION+" = left";
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    cursor.moveToFirst();
    int sum = cursor.getInt(0);
    cursor.close();
    return sum;
}

我已经尝试了几个查询,这似乎是我所需要的。我认为问题出在语句'int sum = cursor.getInt(0);'

我认为零参数会覆盖结果。当我删除零时,代码会中断。 getInt 是一个 SQLite 函数,用于访问数据库中的数据。我没有创建该功能。但我必须使用它或其他类似的功能。

另外,我是否需要在查询周围放置一个 while 循环来移动 COUNT 查询的光标?数据库对你来说不算数,因此不需要迭代?

还有其他方法可以计算字符串值为'left'的行数并且可以返回总和吗?

完整代码在这里:

数据库: https://github.com/Leoa/Accelerometer/tree/AccelerometerDEV/app/src/main/java/thedatabase

实现(参见 onCreate 函数中的按钮): https://github.com/Leoa/Accelerometer/blob/AccelerometerDEV/app/src/main/java/com/leobee/accelerometer/MainActivity.java

感谢您对此进行调查。

【问题讨论】:

    标签: android sqlite return


    【解决方案1】:

    我认为零参数会覆盖结果

    我不知道你认为这意味着什么。

    当我删除零时,代码会中断

    那是因为getInt() 需要知道Cursor 的列才能检索。

    您在运行时也会崩溃,因为您的 SQL 无效。您的 SQL 语句相当于:

    SELECT COUNT(foo) WHERE foo = left
    

    (其中foo 是Java 中TableData.TableInfo.DIRECTION 所指的任何东西)

    不仅您的 SQL 语句缺少要查询的表,而且如果 left 应该是字符串列的值,您需要引用它。你会得到类似的东西:

    SELECT COUNT(foo) FROM tablename WHERE foo = 'left'
    

    我是否需要在查询周围放置一个 while 循环来移动 COUNT 查询的光标?

    没有。

    还有其他方法可以计算字符串值为'left'的行数并且可以返回总和吗?

    不是真的,除了我上面概述的修复。

    【讨论】:

      【解决方案2】:

      我认为问题是您需要在“左侧”添加引号

      String selectQuery =  "SELECT COUNT( "+TableData.TableInfo.DIRECTION+" ) WHERE "+TableData.TableInfo.DIRECTION+" = 'left'"
      

      【讨论】:

        猜你喜欢
        • 2020-07-30
        • 1970-01-01
        • 2018-11-13
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多