ContentProvider详解

ContentProvider主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完善的机制,允许一个程序访问另一个程序的数据,同时还能保证被访数据的安全性。

内容提供器的用法有两种:
1、 是使用现有的内容提供器来读取和操作相应程序中的数据。
2、 创建自己的内容提供器给我们的程序数据提供外部访问接口。

访问其他程序的使用步骤:
1.获得ContentResolver类

ContentResolver resolver=Context.getContentResolver();

ContentResolver提供了一系列方法对数据进行增删改查的操作。
2、解析Uri字符串。
将Uri字符串解析成Uri对象。

Uri uri=Uri.parse("content://com.example.app.provider/table1");

学习Uri字符串的组成。

content://com.example.app.provider/table1

URI将其分为A,B,C,D 4个部分:
A:标准前缀,用来说明一个Content Provider控制这些数据,无法改变的;”content://”
B:URI的标识,它定义了是哪个Content Provider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的 类名。这个标识在 元素的 authorities属性中说明:一般是定义该ContentProvider的包.类的名称 ;”content://hx.android.text.myprovider”
C:路径,不知道是不是路径,通俗的讲就是你要操作的数据库中表的名字,或者你也可以自己定义,记得在使用的时候保持一致就ok了;”content://hx.android.text.myprovider/tablename”
D:如果URI中包含表示需要获取的记录的ID;则就返回该id对应的数据,如果没有ID,就表示返回全部; “content://hx.android.text.myprovider/tablename/#” #表示数据id

3.查数据,得到游标Cursor

Cursor cursor=resolver.query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor!=null){
    while(cursor.moveToFirst()){
        String column1=cursor.getString(cursor.getColumnIndex("column1"));
        String column2=cursor.getInt(cursor.getColumnIndex("column2"));
    }
}

参数:uri,指定查询某个应用程序下的某一张表。
projection, 指定查询的列名。
selection, 指定where的约束条件。行
selectionArgs,为where中的占位符提供具体的值。
orderBy, 指定查询结果的排序方式。

4.增数据

ContentValues values=new ContentValues();
values.put("column1","text");
values.put("column2",1);
resolver.insert(uri,values);

5.更新数据

ContentValues values=new ContentValues();
values.put("column1","");
resolver.update(uri,values,"column1=? and column2=?",new String[]{"text","1"});

6.删除数据

resolver.delete(uri,"column2=?",new String[]{"1"});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值