【问题标题】:How to read a group of records from database by using aCursor?如何使用 aCursor 从数据库中读取一组记录?
【发布时间】:2018-09-01 19:40:05
【问题描述】:

我有一个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"));

但这只会返回分组记录的第一行。只是第一个!

【问题讨论】:

    标签: android sqlite group-by android-cursor


    【解决方案1】:

    我认为您的光标结果缺少循环。您可以为您的结果创建一个列表并将光标值放入该列表中。也许这可以帮助你:

    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());
     }    
    

    您甚至可以定义一个列表并将光标值添加到该列表中,这样您就可以将所有统计信息放在一个列表中。

    最好的问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多