【转】Pro Android学习笔记(八):了解Content Provider(下中)
在之前提供了小例子BookProvider,我们回过头看看如何将通过该Content Provider进行数据的读取。
(1)增加
| private void addBook(String name ,String isbn,String author){ /* 从ContentProvider的insert()方法的参数可以看到,通过ContentValues来进行数据的传递。ContentValues是key/values对,可以存储多个组,非常适合传递信息 */ ContentValues cv = new ContentValues(); cv.put(BookTableMetaData.BOOK_NAME, name); cv.put(BookTableMetaData.BOOK_ISBN, isbn); cv.put(BookTableMetaData.BOOK_AUTHOR, author); /* ContentResolver负责将URI reference解析到正确的provider上,并对该provider的公开的读写接口进行操作。它的方法和provider提供的方法一一对应,并增加了uri参数。*/ ContentResolver cr = getContentResolver(); Uri insertUri = cr.insert(BookProviderMetaData.BookTableMetaData.CONTENT_URI, cv); //对应BookProvider的insert() } |
(2)删除
| private void delBook(String name){ ContentResolver cr = getContentResolver(); int count = cr.delete(BookProviderMetaData.BookTableMetaData.CONTENT_URI, /* Uri uri */ BookTableMetaData.BOOK_NAME + "=?", /* String WhereClause */ new String[]{name}); /* String[] selectionArgs */ } |
(3)修改: update和insert非常相似,也是通过ContentValues传递修改内容。
| private void updateBookIsbn(String name ,String newIsbn,String newAuthor){ ContentValues cv = new ContentValues(); cv.put(BookTableMetaData.BOOK_NAME, name); cv.put(BookTableMetaData.BOOK_ISBN, newIsbn); cv.put(BookTableMetaData.BOOK_AUTHOR, newAuthor); ContentResolver cr = getContentResolver(); int count = cr.update(BookProviderMetaData.BookTableMetaData.CONTENT_URI, /* Uri uri */ cv, /* ContentValues values */ BookTableMetaData.BOOK_NAME + "=?", /* String WhereClause */ new String[]{name}); /* String[] selectionArgs */ } |
(4)查询
| private void showBooks(){ Uri uri = BookProviderMetaData.BookTableMetaData.CONTENT_URI; /*方式一,通过managedQuery( )*/ @SuppressWarnings("deprecation") Cursor c = managedQuery(uri, null, null, null, null); /* 方式二:利用ContentResolver的query来获取*/ // ContentResolver cr = getContentResolver(); // Cursor c = cr.query(uri, null, null, null, null); int iIndex = c.getColumnIndex(BookTableMetaData._ID); int iName = c.getColumnIndex(BookTableMetaData.BOOK_NAME); int iIsbn = c.getColumnIndex(BookTableMetaData.BOOK_ISBN); int iAuthor = c.getColumnIndex(BookTableMetaData.BOOK_AUTHOR);
/* 需要注意,通过下面showInfo显示,各列的Id并非按我们的创建table的列的顺序,所以一定要先获取列的ID。至于row的_id,是按顺序提供,为当前最大的_id+1。但除非我们能很明确清楚,一般不使用这些系统内部安排的Id */ |
相关链接: 我的Android开发相关文章
转自http://blog.csdn.net/flowingflying/article/details/9243275
【转】Pro Android学习笔记(八):了解Content Provider(下中)的更多相关文章
- 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...
- 【转】 Pro Android学习笔记(八六):了解Package(5):使用lib
目录(?)[-] 在项目中使用lib 源代码 了解一些机制 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowin ...
- 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享
目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目
目录(?)[-] 什么是lib项目 小例子 Lib的实现 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView
目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
- 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...
- 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter
目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...
随机推荐
- 【译】理解Spring MVC Model Attribute 和 Session Attribute
作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域.在设计和构建 Java Web 应用 ...
- 被学长教会的高斯消元法Gauss
昨天学长教了我高斯消元法. 这里用一个栗子来模拟一下Gauss的流程. 真的通俗易懂!这里是洛谷题目链接. 这就是例子 x-2y+3z= 4x-5y+6z= 7x-8y+10z= 先将它转化为矩阵 - ...
- linux c编程:系统数据文件和信息
linux系统相关的文件信息包含在/etc/passwd文件和/etc/group中.每次登录linux系统以及每次执行ls -l命令时都要使用口令文件.这些字段都包含在<pwd.h>中定 ...
- IDEA运行后控制台输出乱码
1.点击 2.点击 3.添加:-Dfile.encoding=UTF-8 . 4.点击OK
- python neo4j
https://neo4j.com/developer/python/ http://debian.neo4j.org/
- Linux电源管理(1)-整体架构【转】
本文转载自:http://www.wowotech.net/pm_subsystem/pm_architecture.html 1. 前言 在这个世界中,任何系统的运转都需要能量.如树木依靠光能生长, ...
- hadoop-2.0.0-cdh4.6.0、sqoop-1.4.3-cdh4.6.0、mahout-0.7-cdh4.6.0 安装笔记
1. /etc/profile中环境变量配置: export HADOOP_HOME=/usr/local/hadoop/cdh4. export HADOOP_MAPRED_HOME=${HADOO ...
- SrpingCloud 之SrpingCloud config分布式配置中心实时刷新
默认情况下是不能及时获取变更的配置文件信息 Spring Cloud分布式配置中心可以采用手动或者自动刷新 1.手动需要人工调用接口 监控中心 2.消息总线实时通知 springbus 动态刷新 ...
- 在我的电脑右键 Manage 拒绝访问的解决方法
为什么我的电脑右键里的“管理”会变成“manage”啦.原来是中文的,点了之后出来一个对话框,标题是“桌面”说是“拒绝访问” 是系统环境变量里少了 windir=C:\WINDOWS 方法是:打开系统 ...
- algorithm之排序算法--待解决
简述:排序算法,参见http://www.cplusplus.com/reference/algorithm/?kw=algorithm 待解决问题:各种排序算法的实现 /* template < ...
