ContentProvider的实例基础介绍

ContentProvider的实例基础介绍

1.介绍URI
*要从ContentProvider获取数据,需要使用该ContentProvider提供的URI。因为ContentProvider定义的URI对该ContentProvider是唯一的,所以记录URI并能被程序员看到和调用非常重要。
例如:ContactsContract.Contacts.CONTENT_URI*
2.介绍ContentValues
这是一种类似hashMap的存储机制,通过键值对的形式进行存储。
* 3.增删该查实例中讲解(联系人)*

//插入一条数据 两个参数
//两个参数①表示获取字段的uri ②表示values数据值 
public void insertContact(String displayName, String phone, String enail) {
    //①:insert一条空表数据,目的是获取uri的id
    ContentValues values = new ContentValues();
     //uri_contacts_data表示数据库中的字段
    Uri uri = resolver.insert(Uri.parse(uri_contacts_data), values);
    long id = ContentUris.parseId(uri);//获取id
    //②;insert 联系人姓名
    values.clear();
    values.put("raw_contact_id", id);
    values.put("data1", displayName);
    values.put("data2", displayName);
    resolver.insert(Uri.parse(uri_contacts_data), values);
}
//删除数据  三个参数
//参数①uri  ② 字段  ③ id 号
public boolean deleteContact(String id) {//返回布尔值
    int count = resolver.delete(Uri.parse(uri_contacts_data), "_id=", new String[]{id});
    return count > 0 ? true : false;
}
//修改数据  四个参数
//参数①uri 参数②修改后的值③ 字段(用于条件)④id(行号)
public boolean updateContact(String id, String newName) {
    ContentValues nContentvalues = new ContentValues();// 声明nContentvalues
    nContentvalues.put("display_name", newName);  // 插入名字将你要插入的数据变为ContentValue格式
    //四个参数:uri--key  值, “_id=? whereClause 参数将强制对有      关的行进行更新(sql语句) ”  num(修改的id)
    int count = resolver.update(Uri.parse(uri_raw_contacts), nContentvalues, "_id=?", new String[]{id});//
    nContentvalues.clear();
    nContentvalues.put("data1", newName);
    nContentvalues.put("data2", newName);
    resolver.update(Uri.parse(uri_contacts_data), nContentvalues, "raw_contact_id=? and mimetype_id=7", new String[]{id});
    return count > 0 ? true : false;  //返回true 是 插入成功。
}
//查询数据 五个参数
//参数①uri ② 字段(id name) ③条件(过滤)④用于替换的值⑤排序 
public List<Map<String, String>> getContactsList() {
    List<Map<String, String>> list = new ArrayList<>();  // 用于返回值
    Cursor cursorRawCotacts = resolver.query(Uri.parse(uri_raw_contacts),
            new String[]{"_id", "display_name=?"}, null, null, null);//获取说有姓名的数据。
    while (cursorRawCotacts.moveToNext()){// Cursor的方法用于移动读取数据
        Map<String, String> map = new HashMap<>();
        String id = cursorRawCotacts.getString(cursorRawCotacts.getColumnIndex("_id"));
        String displayName = cursorRawCotacts.getString(cursorRawCotacts.getColumnIndex("display_name"));
        map.put("id", id);
        map.put("display_name", displayName);
        list.add(map);
    }
    return list;
}

总结

增删该查:参数就是 2 3 4 5.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值