【Android 开发教程】条件查询、过滤和排序
来源:互联网 发布:mac怎么格式化u盘 编辑:程序博客网 时间:2024/05/16 15:59
本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/Projections
managedQuery()的第二个参数(CursorLoader类的第三个参数)控制查询返回列的数量。之前的代码,传入的是null,就是把所有的列都取到。
Cursor c; if (android.os.Build.VERSION.SDK_INT < 11) { c = managedQuery(allContacts, null, null, null, null); } else { CursorLoader cursorLoader = new CursorLoader(this, allContacts, null, null, null, null); c = cursorLoader.loadInBackground(); }可以创建一个数组,指定要查询哪些列。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER }; Cursor c; if (android.os.Build.VERSION.SDK_INT < 11) { c = managedQuery(allContacts, projection, null, null, null); } else { CursorLoader cursorLoader = new CursorLoader(this, allContacts, projection, null, null, null); c = cursorLoader.loadInBackground(); }
这样,就指定的需要查询的列:名字和是否有手机号。
Filtering
managedQuery()方法的第3和第4个参数(CursorLoader类的第4和第5个参数)。这两个参数指定了SQL语句中的WHERE条件,进行条件查询。
举个例子,下面的代码返回名字以"三"为结尾的联系人。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER }; Cursor c; if (android.os.Build.VERSION.SDK_INT < 11) { c = managedQuery(allContacts, projection, ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?", new String[] { "%三" }, null); } else { CursorLoader cursorLoader = new CursorLoader(this, allContacts, projection, ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?", new String[] { "%三" }, null); c = cursorLoader.loadInBackground(); }经查询,会返回“张三”。
Sorting
managedQuery()和CursorLoader的最后一个参数。这个参数指定了SQL语句的ORDER BY条件,进行结果排序。
下面的代码对联系人进行名字的升序排列。
Uri allContacts = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER }; Cursor c; if (android.os.Build.VERSION.SDK_INT < 11) { c = managedQuery(allContacts, projection, ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?", new String[] { "%三" }, ContactsContract.Contacts.DISPLAY_NAME + " ASC"); } else { CursorLoader cursorLoader = new CursorLoader(this, allContacts, projection, ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?", new String[] { "%三" }, ContactsContract.Contacts.DISPLAY_NAME + " ASC"); c = cursorLoader.loadInBackground(); }
- 【Android 开发教程】条件查询、过滤和排序
- solr查询索引,各种查询,查询字符串,过滤查询,条件查询,排序查询、分页查询、高亮查询
- ormlite 在android中 排序 条件查询
- ormlite 在android中 排序 条件查询
- 使用SPQuery进行条件查询和排序
- 动态排序和动态查询条件
- 过滤条件中的子查询
- 添加查询排序过滤
- django ORM model filter 条件过滤,及多表连接查询、反向查询 和 多条件查询
- Java乔晓松-oracle的条件查询和排序查询
- Vaadin Web应用开发教程(47): SQLContainer-过滤及排序
- sqlserver中分组查询,条件过滤,排序,写这个sql,我为自己感到骄傲
- XSL简明教程(6)XSL过滤和查询
- XSL简明教程(6)XSL过滤和查询
- XSL简明教程(6)XSL过滤和查询
- XSL简明教程(6)XSL过滤和查询
- sql查询做的报表实现自定义过滤和排序
- Oracle数据库的查询之过滤和排序(二)
- Qemu, Spice 消息模型
- compute the max sum of a continuours subset
- boost学习之BOOST_FOREACH
- 百度快照什么原理
- 利用C++试用JSON第三方库JsonCpp
- 【Android 开发教程】条件查询、过滤和排序
- 部署WSP出现错误—已在此服务器场中安装ID为XXXXX的功能
- 新建用户/表空间/序列--数据库用户导入导出
- 计算机三级网络技术
- Android圆形的ImageView
- 浅析Android中如何利用attrs和styles定义控件
- 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,
- C/C++语言笔试题
- Jsoncpp的使用