Android学习之ContentProvider总结
来源:互联网 发布:shell脚本编程诀窍 编辑:程序博客网 时间:2024/05/18 00:17
在使用ContentProvider进行数据操作的时候(insert() update() query() delete()),都是采用了URI的形式进行数据的操作
如: content://com.kingowe.membercontentprovider/member/3
<A部分> <B部分> <C部分>
· A部分(协议):ContentProvider(内容提供者)访问协议,已经由Android所规定为:content://;
· B部分(主机名或Authority):用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它,
一般都为程序的“包.类”名称,但是要采用小写字母的形式表示;
· C部分(Path):访问的路径,一般都为要操作的数据表的名称,根据操作的不同可以如以下几种情况:
如: member表的全部数据:content://org.lxh.demo.membercontentprovider/member/
· 根据id访问数据:content://Authority/Path/ID
如:member表中id为3的数据:content://org.lxh.demo.membercontentprovider/member/3
· 访问某一条记录的某个字段:content://访问标识/表名称/ID/列名称
如:member表第3条记录name数据:content://org.lxh.demo.membercontentprovider/member/10/name
================以上部分选自李兴华老师<Android开发实战经典>===============
由于通过 ContentProvider 来操作数据库需要牵扯到很多类,因此我总结了一下
通过ContentProvider 操作数据库的大体结构、流程
《 操作流程:》
1. 定义一个类 CPInstance extends ContentProvider ,在 CPInstance 中通过重写 ContentProvider
中的抽象方法 来操作数据库,所以在 CPInstance 中就需要定义 SQLiteOpenHelper、SQLiteDatabase,
在重写的方法中 通过 SQLiteOpenHelper对象 取得一个 SQLiteDatabase 的实例来操作数据库
2. 在 CPInstance 中定义 UriMatcher,在 static { } 中创建 UriMatcher 的实例,并且同时为 UriMatcher 实例
添加匹配规则:addURI(String authority, String path, int code)
3. 在其他需要访问数据库的类中,以 MainActivity 为例: 在 MainActivity 中定义一个 ContentResolver,通过 Activity
类的getContentResolver() 方法获得一个ContentResolver 对象resolver,通过 Uri.parse("content://authority/xxx")
解析地址得到一个 URI 实例 uri, 通过为 resolver.query() resolver.delete() ...传入 uri 以及其他必要参数
来操作数据库 (这里实际是调用的 ContentProvider 中的对应的方法,在 ContentProvider中完成对数据表的操作)
4. 配置 CPInstance (AndroidManifest.xml)
《AndroidManifest.xml 中 <application> 标签中添加的子标签 <provider>》
<provider
android:name="com.example.android.CPInstance"
android:authorities="com.packageName.personprovider">
<!--
【说明:】
· android:name 属性值为 自己实现的 ContentProvider 子类 的全名(包名 + *.java)
· android:authorities 属性值为自定义值,一般为当前应用程序的包名 + .user-definedName
该属性的作用类似于网站的域名
--></provider>
<额外小知识>:由于ContentProvider是一个数据的操作标准,所以在ContentProvider定义的时候就
已经明确的提出了要求,只要是唯一的标识(ID),其字段必须定义为“_id”
本人为Android初学者,所以所发表的内容肯定会有不足之处,真心希望各位发现有不正确的内容时,留下您宝贵的意见!
非常 感谢!
- Android学习之ContentProvider总结
- Android Contentprovider学习之 实例总结
- Android ContentProvider 学习总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- Android之ContentProvider总结
- GIT常用命令 && GIT本地使用 && GIT报错解决 && GIT的忽略文件(ignore files)
- 一个绚丽的loading动效分析与实现!
- eclipse连接mysql数据库
- ******************* 其他数据类型 *******************
- C# Redis实战(五)
- Android学习之ContentProvider总结
- catalina.out文件过大!!使用Log4j管理tomcat日志输出
- Fedora20优化(常用)
- wamp安装pthreads扩展(PHP多线程)
- Android 自定义 TabActivity 的实例方法
- Shell脚本常识(基本知识)
- C# Redis实战(六)
- Linux那些事儿 之 戏说USB(10)模型,又见模型
- 黑马程序员——Java基础->网络编程(TCP)