转自: http://www.eoeandroid.com/thread-31662-1-1.html
比如要用实现这么一个sql语句:
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls GROUP BY number,type,date/8640000
ORDER BY date DESC
这个在一般的SQL编译工具里都能正常运行,在ContentRosolver中有些不一样。
用ContentRosolver中的query这么写:
private static String CALLS_COUNT = "calls_count";
static final String[] CALL_LOG_PROJECTION = new String[] {
Calls._ID,
Calls.NUMBER,
Calls.DATE,
Calls.DURATION,
Calls.TYPE,
Calls.CACHED_NAME,
Calls.CACHED_NUMBER_TYPE,
Calls.CACHED_NUMBER_LABEL,
"COUNT(*) AS " + CALLS_COUNT
};
String selection = "0==0) GROUP BY ("+
Calls.NUMBER+"),("+
Calls.TYPE+"),("+
Calls.DATE+"/86400000"; //这里没有左边括号"("和右边括号")" 程序会自己添加.
//0==0 一个=号和2个等于都可以.
rosolver.query(QUERY_TOKEN, null, Calls.CONTENT_URI,
CALL_LOG_PROJECTION, selection, null, Calls.DEFAULT_SORT_ORDER);
注意事项:
1 关键字“COUNT, AS, GROUP BY”的大小写
2 COUNT(*) 后需要跟AS ***
3 Android会将query中的参数整合成一条sql语句,其中会将selection的字符串自动加一个括号,形成 “WHERE
(*******)”的形式,所以要特别注意selection中有括号的情况
4 GROUP BY后面的字段应该加括号,用逗号隔开。
转化为sql语句正确的形式应该如下:
SELECT _id, number, date, duration, type, name, numbertype,
numberlabel, COUNT(*) FROM calls WHERE (0==0) GROUP BY
(number),(type),(date/8640000) ORDER BY date DESC
分享到:
相关推荐
1、Android Room操作SQLite数据 2、ContentProvider使用,使用Room进行数据库操作
Android ContentProvider简单实现
android contentprovider使用示例
ContentProvider 实例,实现ContentProvider,从其他应用访问ContentProvider数据,实现资源共享
Android中ContentProvider的示例,详细可以参见博客:http://www.cnblogs.com/plokmju/p/android_ContentProvider.html
Android学习ContentProvider数据更新与Observer模式一Observer模式意图: 定义对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被更新。 依赖(Dependents)、发布-...
详见http://blog.csdn.net/huaxun66/article/details/53202432
Android知识点ContentProvider篇
个人整理的Android Intent的使用介绍 Android 组件之间的信使Intent Android 中的数据存取和ContentProvider
此demo利用ContentProvider实现android app间的数据共享
Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...
免费下载:android ContentProvider详细解析 讲得好详细
1.适用场景1) ContentProvider为存储和读取数据提供了统一的接口2) 使用ContentProvider,应用程序可以实现数据共享3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,...
ContentProvider(数据提供者)是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同应用程序之间是不能够直接访问的。
Android中用ContentProvider快速查找通讯录信息的代码清单.pdf 学习资料 复习资料 教学资源
Android基于ContentProvider的音乐播放器,通过读取系统多媒体信息,得到储存在外部存储器上的所有音频文件内容,用listview显示歌曲名和歌手信息.并通过mediaPlayer进行播放.该版本只是完成了一个音乐播放器的最简单...
android contentprovider
通过一个日记本实例讲解了android contentprovider的用法。
android-关于ContentProvider的使用例子 有详细注释
ContentProvider的创建与访问 android