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.