2011-11-12 39 views
0

嗨,大家好,我想从android中的sqlite数据库中获得列值的总和。 并试图用这个来得到列KEY_COST的总和。查询android中的SQLite(求和列值)

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

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

回答

0

你只需要移动光标中的第一个结果cursor.moveFirst()然后你可以做cursor.getInt(1)来获得标量值。根据数据类型使用simpleQueryForString()

public int getColumnData() { 

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

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

或者,:

1

您可以返回标量值像这样。

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);    
     }