通过ContentResolver.query,或AsyncQueryHandler中的startQuery方法如何加入SQLite中的GROUP BY语句
问题是这样的:
在项目中,需要从消息的数据库中得到每个联系人最新的消息,并且显示到界面上,类似于咱们手机上短信列表那样。那么,在诸多的消息中,如何得到每一个联系人对应的聊天记录呢?只要把每个人对应的聊天记录找到,就可以知道与这个联系人通信的最后一条聊天记录是哪个了。在SQL中,如果数据库中有联系人字段,那么我们就可以用GROUP BY来将属于同一联系人的消息都查询出来了。然而,我需要异步查询,或者通过ContentResolver对象来查询的话,要怎么写各个参数呢?
例如:在AsyncQueryHandler中,startQuery()方法的参数分别为:
int token: 令牌,和onQueryConplete一致;
Object cookies: 要携带的对象;
Uri uri: 要访问数据库的uri;
String[] projection: 要查询的字段集合;
String selection: 查询条件;
String[] selectionArgs: 匹配查询条件中的“?”;
String orderBy: 排序规则。
其中,我们一般是通过uri、selection和selectionArgs来限制查询数据库后要返回的数据的,selection在SQL中,是WHERE后面的语句。那如果我想要加上GROUP BY,要写到哪个参数里面呢?
代码中,我是这么实现的:
String where = “0==0) GROUP BY (“+……;
所以,只要加上“0==0)”,在其后面加上你想要实现的GROUP BY语句就可以啦~~
不过要注意括号哦~~~
领取专属 10元无门槛券
私享最新 技术干货