#sql
#sql
Вопрос:
Привет, ребята, я хочу получить суммирование значений столбцов из моей базы данных sqlite в Android. и я пытаюсь использовать это, чтобы получить сумму значений KEY_COST столбца.
public Cursor fetchAllCost() {
return mDb.query(
DATABASE_TABLE,
new String[] { "SUM(KEY_COST)"},
null,
null,
null,
null,
null);
}
но он выдает мне курсор, и я не знаю, как получить значение из объекта Cursor. Любая помощь!!!
Ответ №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()
.
Ответ №2:
Вы должны просто перейти к первому результату в курсоре с помощью cursor.moveFirst()
, а затем вы можете сделать cursor.getInt(1)
, чтобы получить скалярное значение.
Ответ №3:
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);
}