Я пытаюсь получить сумму из определенного столбца в базе данных. Я думаю, что мой запрос в порядке, но я думаю, что что-то не так с его получением. Пожалуйста, направь меня по правильному пути.
Огромное спасибо заранее.
public static double countPrice (SQLiteDatabase db, int selectedID){
String[] sumPrice = new String[]{"sum(item_price)"};
String selection = "list_id =? AND item_flag =?";
String[] selectionArgs = new String[]{String.valueOf(selectedID), String.valueOf(0)};
Cursor c = db.query(TABLE_NAME, sumPrice, selection, selectionArgs, null, null, null);
double result = c.getCount();
return result;
}
Спасибо за ответ, я постараюсь вернуть результат.
Вы возвращаете cursor.getCount (), который возвращает количество строк, но не сумму. Курсор Android
Используйте следующий код:
Cursor cur = db.rawQuery("SELECT SUM(myColumn) FROM myTable", null);
if (cur.moveToFirst())
{
return cur.getInt(0);
}
Привет, Спасибо за ответ, я попробовал double result; if (c.moveToFirst()) { result = c.getDouble(0); } return result;, но он дал мне ошибку, сказал, что результат не инициализирован, есть идеи, почему?
на самом деле я знаю почему, моя глупая ошибка = /, но большое спасибо за вашу помощь =) признателен.
Вы используете метод Cursor getCount(), который вернет количество строк, которое будет равно 1, поскольку запрос возвращает агрегат (то есть сумму).
Вместо этого вам нужно
get???.Таким образом, ваш код может быть: -
public static double countPrice (SQLiteDatabase db, int selectedID){
String[] sumPrice = new String[]{"sum(item_price)"};
String selection = "list_id =? AND item_flag =?";
String[] selectionArgs = new String[]{String.valueOf(selectedID), String.valueOf(0)};
Cursor c = db.query(TABLE_NAME, sumPrice, selection, selectionArgs, null, null, null);
Double result = 0; // default value to signify nothing extracted
if (c.moveToFirst()) { // move to the first(only) row in the Cursor
result = c.getDouble(0); // get the value from the first column
}
c.close(); // Should always close cursors when done with them
return result; // Ok to return extracted value (or default for nothing extracted)
}
Большое спасибо за вашу помощь, это работает, и я узнаю что-то новое сегодня, я благодарен. знак равно