Content Provider理解

来源:互联网 发布:51单片机价格 编辑:程序博客网 时间:2024/06/05 17:40

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 获取、修改或者保存联系人信息 LiveFolders Content 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 列 运算符 值
  • 值为数字不带单(双)引号“”‘’
  • 字符串需带单(双)引号“”‘’
0 0
原创粉丝点击