在android中查询SQLite(列值的求和)

时间:2011-11-12 11:46:49

标签: sql

大家好我想从android中的sqlite数据库中获取列值的总和。 并且我正在尝试使用它来获取列KEY_COST的总和。

public Cursor fetchAllCost() {
   return mDb.query(
                     DATABASE_TABLE, 
                     new String[] { "SUM(KEY_COST)"}, 
                     null, 
                     null, 
                     null, 
                     null, 
                     null);
}

但它给了我一个游标,我不知道如何从Cursor对象获取值。任何一个帮助!!!

3 个答案:

答案 0 :(得分:1)

你可以像这样返回标量值:

public int getColumnData() {

    mDb = mDbManager.getReadableDatabase();
    final SQLiteStatement stmt = mDb
            .compileStatement("SELECT SUM(KEY_COST) FROM...");

    // Cast as appropriate
    return (int) stmt.simpleQueryForLong();
}

或者,根据数据类型,使用simpleQueryForString()

答案 1 :(得分:0)

您应该只使用cursor.moveFirst()移至光标中的第一个结果,然后您可以cursor.getInt(1)获取标量值。

答案 2 :(得分:0)

<强> rawQuery
总和值位于第一列 - cursor.getInt(0);

Cursor cursor = database.rawQuery(
    "SELECT SUM(" + COL_NAME + ") FROM " + TABLE_NAME, null);
if(cursor.moveToFirst()) {
    return cursor.getInt(0);
}


<强>查询

String[] columns = new String[] {                
                 "sum(" + DbHelper.C_COUNT_OF_WORDS + ")"
                };

        String where = null;
        String whereArgs[] = null;
        String groupBy = null;
        String having = null;
        String order = null;
        String limit = null;

        database = dbHelper.getReadableDatabase();
        Cursor cursor = database.query(DbHelper.TABLE_STATISTICS, columns, where, whereArgs, groupBy, having, order, limit);

        if(cursor.moveToFirst()) {
            return cursor.getInt(0);            
        }