0

我有以下函数,并试图获取列中的所有整数并将它们相加为总数。

下面的代码不起作用,因为对于测试,我在表中放了两行,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;
}
4

3 回答 3

7

您可以直接进行 sqlite 查询,例如:

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

希望它会帮助你。

于 2013-01-25T07:54:15.913 回答
1

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

total= total + c.getLong(KEY_HITS);
于 2013-01-25T06:19:42.777 回答
1

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

于 2013-01-25T06:20:34.920 回答