大家好我想从android中的sqlite数据库中获取列值的总和。 并且我正在尝试使用它来获取列KEY_COST的总和。
public Cursor fetchAllCost() {
return mDb.query(
DATABASE_TABLE,
new String[] { "SUM(KEY_COST)"},
null,
null,
null,
null,
null);
}
但它给了我一个游标,我不知道如何从Cursor对象获取值。任何一个帮助!!!
答案 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);
}