0

私は次の関数を持っており、列内のすべての整数を取得しようとしており、それらを合計して合計しています。

以下のコードは機能しません。テストのためにテーブルに 2 つの行を配置し、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

次のように、make 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

getColumnIndex指定された列名のゼロベースのインデックスを返します。列が存在しない場合は-1を返します。あなたが持っている必要がありますc.getInt(KEY_HITS)

于 2013-01-25T06:20:34.920 に答える
1

これは、列インデックスを 2 回追加しているためです。あなたは書くべきです

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