Content Provider理解

Content Provider理解

ContentProvider不需要了解数据在内部如何保存,只需要使用一组通用方法操作数据的增删改查。
概述

数据模型
使用前需要知道数据模型,数据模型一般使用二维表表示。

URI用法
Content Provider的浅醉一般是使用content://com.example.ss/dba/001
- content://标准前缀
- com.example.ss authority部分,标识Content Provider
需要在标签provider的元素authorities属性中声明authority

  • dba 路径
  • 001 请求的(_ID)(前缀有下斜杠),可直接指定ID。

预定义Content Provider
预定义名称功能
Browser读取或者修改标签、浏览历史或者网络搜索
CallLog查看或者更新通话记录
Contacts获取、修改或者保存联系人信息
LiveFoldersContent Provider提供内容的特定文件夹
MediaStore访问声音、视频和图片
Setting查看和获取蓝牙设置、铃声或其他设备
UserDictionary预测文本输入时,提供定义单词给输入法。应用程序和输入法都可以增加数据到该字典
数据操作

ContentResolver cr= getContentResolver();
ContentResolver 操作ContentProvider
操作有:
1. insert
增加记录
在ContentValues对象中建立键值对映射,每个键匹配Content Provider中的列名,每个值该列希望增加的值。
调用ContentResolver.insert();
//传递URI和ContentValues映射。
增加新值
疑问点:
当记录已经存在,可以增加新信息或者修改存在信息。
byte数组作为参数,使用ContentValues.put();

存储类型数据量使用方法
小图标的图片、短音频片段少量二进制数据byte数组作为参数,使用ContentValues.put()
图片或者音频、视频大量二进制数据保存代表数据的content:URI到表格,使用文件URI调用ContentResolver.openOutputStream()

2. delete
ContentResolver.delete();
//提供删除记录类型的URI和一个SQL Where语句
不懂SQL Where,看后面补充SQL基础知识
3. update
ContentResolver.update();
//提供列名和值
4. query
查询数据

需要提供:URI、查询数据字段名称和字段中的数据类型
两种使用相同的参数,返回值为Cursor对象
Cursor对象能向前或向后遍历整个结果集
- ContentResolver.query();
- Activity.managedQuery();
辅助方法
增加ID值到URI
- ContentUris.withAppendedID()
- Uris.withAppendedPath();


补充SQL基础知识
  • SQL DML 和 DDL
    可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
    SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
  • SQL 的 DML 部分:
  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据
    SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
  • SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库

  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引
    Where语法
    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
  • 值为数字不带单(双)引号“”‘’
  • 字符串需带单(双)引号“”‘’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值