Как прочитать группу записей из базы данных с помощью aCursor? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть sqlite таблица базы данных. Мне нужно получить записи из этой таблицы, которые сгруппированы по столбцу date. вот запрос, который я выполняю:

select id as _id,sum(price) as price,sum(quantity) as quantity,sum(quantity*purchase_price) as cost,date from sales where date between '2018-08-24' and '2018-09-01' group by date order by date desc

это должно вернуть что-то вроде:

date            price        quantity        cost

2018-08-24      345          13              250
2018-08-26      425          15              450

это пример данных, которые возвращаются из запроса, сгруппированного по дате. Это в основном отчет о продажах, в котором говорится, что на 2018-08-24 вы получили $345, продали 13 предметов и потратили $250.

Я получаю результат запроса, используя курсор, поэтому я получил объект курсора, содержащий все эти данные. Мой вопрос заключается в том, как я могу получить доступ ко всей этой информации из курсора?

Я попытался получить к нему доступ обычным способом, например так:

cursor.getInt(cursor.getColumnIndexOrThrow("quantity"));
cursor.getInt(cursor.getColumnIndexOrThrow("price"));
cursor.getInt(cursor.getColumnIndexOrThrow("cost"));
cursor.getString(cursor.getColumnIndexOrThrow("date"));

но это просто вернет первый ряд из сгруппированных записей. только первый!

1 Ответ

0 голосов
/ 01 сентября 2018

Я думаю, что вы пропустили цикл по результатам вашего курсора. Вы можете создать список для ваших результатов и получить значение курсора в этот список. Может быть, это может помочь вам:

if (cursor.moveToFirst()) {

    do{

       //Get_sales_values_from_Cursor

       cursor.getInt(cursor.getColumnIndexOrThrow("quantity"));
       cursor.getInt(cursor.getColumnIndexOrThrow("price"));
       cursor.getInt(cursor.getColumnIndexOrThrow("cost"));
       cursor.getString(cursor.getColumnIndexOrThrow("date"));

       //move_to_next_row
    } while (cursor.moveToNext());
 }    

вы даже можете определить список и добавить к нему значения курсора, так что вы можете иметь всю свою статистику в списке.

С уважением.

...