1.用getContentResolver()获取ContentResolver类的实例
2.ContentProver对象有query()、update()、delete()、insert()方法,需要传入一个URI,格式为:content://+权限(包名)+路径(表名等),返回的是一个Cursor对象
3.运用系统的Provider,如查询电话薄:
getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null);
4.自定义ContentProvider
1)继承ContentProvider类,并重写
onCreate()(完成数据库的更新和初始化)
query() insert() update() delete() DataBase的增删改查
getType()(根据传入内容的URI返回MIME类型,规则:由URI解析得到是哪个代码,即哪个表哪个数据,返回 URI:content://com.example.app.provrder/table1(多条数据) MIME:vnd.android.cursor.dir/com.example.app.provrder.table1(URI以表结束) URI:content://com.example.app.provrder/table1/1(单条数据) MIME:vnd.android.cursor.dir/com.example.app.provrder.table1(URI以Item结束)
借助UriMatcher(对URI进行解析,从中提取需要访问的表和数据),用法如下:(权限,路径,自定义代码)
添加:uriMatcher.addURI("com.example.app.provrder","table1",TABLE1_DIR);
使用:uriMatcher.match(uri) {case TABLE1_DIR: ....}比较方便匹配Uri,直接用一个代码可以代替一个URI
2)注册(在application里面定义)
<provider android:name="com.example.dataBasetest.DataBaseProvider"(类名) android:authorities:"com.example.database.provider"(权限) android:exported:true(可以被其他应用使用)/>
3)使用(权限+路径)
用getContentResolver()获取ContentResolver类的实例
调用各重写方法,进行数据库的操作getContentResolver().query(content://com.example.database.provider/table1,null,null,null)
网友评论