如何获取sqlite数据库中的列中所有数字的总和,android

时间:2013-01-25 06:14:54

标签: android database sqlite

我有以下功能,我试图获取一列中的所有整数并总计它们。不知道怎么做。

下面这段代码不起作用,因为对于测试我在表中放了两行而KEY_HITS列的数字是5和6,总数应该是11但是我得到4作为结果

 public int getTotal() {

    String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_HITS };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
            null, null);
    int total = 0;

    int iHits = c.getColumnIndex(KEY_HITS);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        total = total + iHits;
    }
    return total;
}

3 个答案:

答案 0 :(得分:7)

您可以直接创建sqlite查询:

Cursor cursor = sqliteDatabase.rawQuery(
    "SELECT SUM(COL_VALUES) FROM myTable", null);
if(cursor.moveToFirst()) {
    return cursor.getInt(0);
}

希望它会对你有所帮助。

答案 1 :(得分:1)

这是因为你要两次添加列索引。 你应该写

total= total + c.getLong(KEY_HITS);

答案 2 :(得分:1)

getColumnIndex返回给定列名的从零开始的索引,如果该列不存在,则返回-1。你应该有c.getInt(KEY_HITS)