android - 如何使用 aCursor 从数据库中读取一组记录?
问题描述
我有一个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"));
但这只会返回分组记录的第一行。只是第一个!
解决方案
我认为您错过了光标结果的循环。您可以为结果创建一个列表并将光标值放入该列表中。也许这可以帮助你:
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());
}
您甚至可以定义一个列表并将光标值添加到该列表中,这样您就可以将所有统计信息放在一个列表中。
此致。
推荐阅读
- python - 如何将 Dataframe 的第一行读取为数据行而不是标题
- javascript - CSS 捆绑不适用于 MiniCssExtract 插件和 css-loader (Webpack)
- javascript - 多个正则表达式/模式验证 Joi Hapi
- discord - Discord.py channel.edit 没有做任何事情,并且 bot 没有越过那条线
- amazon-web-services - 超出最大调用堆栈大小 - aws-cdk
- c++ - 使用 Opengl CORE 函数和 Comptability profile - GLFW
- nginx - 如何使用 kubernetes 入口处理错误 503
- laravel - 为什么这个 Eloquent 查询没有得到预期的结果?
- flutter - Flutter DropdownButtonFormField.onChanged 不更新 UI
- django - Django 错误,CSRF 失败:CSRF 令牌丢失或不正确