Android开发(7)数据库和Content Provider
思想:应用程序数据的共享
对数据库的访问仅限于创建它的应用程序,但是事情不是绝对的
Content Provider提供了一个标准的接口,可供其他应用程序访问和使用其他程序的数据
下面我们由下向上来分析ContentProvider的处理流程:
1 数据库——SQLite
继承该类,重写其构造函数,onCreate方法(创建)和onUpgrade方法(更新)
访问:getWritableDatabase方法(获得可写的数据库实例)和getReadableDatabase方法(获取只读的数据库实例)
/** 插入新行 **/ // 创建要插入的一行新值
ContentValues newValues = new ContentValues(); //为每一个字段赋值
newValues.put(NAME_COLUMN, _name);
newValues.put(ADDRESS_COLUMN, _address);
...... //插入到数据库中
SQLiteDatabase db = DBOpenHelper.getWritableDatabase();
db.insert(DBOpenHelper.DATABASE_TABLE, null, newValues);
2 Content Provider
- onCreate(): 初始化底层的数据源
- query()
- update()
- delete()
- insert()
- getType()
注册:通过标记实现,name属性+authorities标记
demo:<provider android:name="ArticlesProvider"
android:authorities="shy.luo.providers.articles">
</provider>
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/item");
public static final Uri CONTENT_POS_URI = Uri.parse("content://" + AUTHORITY + "/pos");
ContentResolver提供了查询和处理ContentProvider的抽象
使用:通过URI交互
/** 查询操作 **/
public Article getArticleById(int id) {
Uri uri = ContentUris.withAppendedId(Articles.CONTENT_URI, id); String[] projection = new String[] {
Articles.ID,
Articles.TITLE,
Articles.ABSTRACT,
Articles.URL
}; Cursor cursor = resolver.query(uri, projection, null, null, Articles.DEFAULT_SORT_ORDER); // 获取一个数据库的游标 Log.i(LOG_TAG, "cursor.moveToFirst"); if (!cursor.moveToFirst()) {
return null;
} String title = cursor.getString(1);
String abs = cursor.getString(2);
String url = cursor.getString(3); return new Article(id, title, abs, url);
}
4 URI


- 与下层的数据源进行交互,使用SQLiteOpenHelper类
- 与上层的应用程序进行教书,使用ContentResolver类+URI
Android开发(7)数据库和Content Provider的更多相关文章
- Android开发-API指南-创建 Content Provider
Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...
- Android开发学习之路--Content Provider之初体验
天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下 ...
- 我的Android 4 学习系列之数据库和Content Provider
目录 创建数据库和使用SQLite 使用Content Provider.Cusor和Content Value来存储.共享和使用应用程序数据 使用Cursor Loader异步查询Content P ...
- 数据库和Content Provider
SQLite提供了强大的SQL数据库的库文件,从而使应用程序拥有一个具备完全控制权的健壮的持久化层. Content Provider实现在应用程序内和应用程序之间存储.共享和使用结构化数据.通过将数 ...
- 安卓开发_深入理解Content Provider
一.Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可 ...
- Android 内容提供器(Content Provider)介绍
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性.目前,使用内容 ...
- 【转】Android开发之数据库SQL
android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 android中采用的数据库是SQLi ...
- Android 数据存储04之Content Provider
Content Provider 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/25 skywang 1 URI 通用资源标志符(Universal Resource Identif ...
- Android开发 ---SQLite数据库,lock文件,结果集游标,适配器,安全退出,给连接设置下划线,编辑器,投影,ContentValues存储,DbHelper,activity栈
目录截图: 1.activity_main.xml 主界面效果: <?xml version="1.0" encoding="utf-8"?> &l ...
随机推荐
- mac环境下使用docker安装nginx
前言 距离上一篇文章已经很长时间,近期实在事情太多了,也没来得及继续更新一些新的内容.现在开发使用的工作实在太多了,小编实在忍受不了windows那样卡机的状态,于是最近换了一个mac电脑,虽然做开发 ...
- C#(winform)的label自动换行
Label 是没有自动换行属性的,不像Textbox有WordWrap属性 尽管没有自动换行的属性,但也能够自动换行, 首先 AutoSize改成false; 然后调整 Label的大小,长和宽 (也 ...
- Linux系统快速查找文件
有时候下载新的文件或安装新的包 但是却搞不清默认放在哪个目录了,这个时候可以使用locate命令进行快速模糊查找 比如我使用 go get github.com/coreos/bbolt/... 在一 ...
- PTA (Advanced Level) 1015 Reversible Primes
Reversible Primes A reversible prime in any number system is a prime whose "reverse" in th ...
- 基于RedHat6.5的Greenplum环境配置
安装Greenplum的时候遇到了很多坑,在此记录下 欢迎园友补充问题,共同研究解决! 安装说明 1.环境说明 操作系统:Red hat 6.5 64 位 2.配置规范 2.1基本说明 greenpl ...
- Redis---1、介绍
Redis简介: 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求. 优点: 对数据高并发读写 对海量数据的高效率存储和访问 对数据的可扩展性和高可用行 ...
- 怎样在 Azure 应用服务中生成和部署 Java API 应用
先决条件 Java 开发人员工具包 8(或更高版本) 已在开发计算机上安装 Maven 已在开发计算机上安装 Git Azure 订阅付费版或试用版 HTTP 测试应用程序,如 Postman 使用 ...
- [转]深入Java单例模式
文章从 https://blog.51cto.com/devbean/203501 转载 问题 : doble-check 实现的单例模式有什么缺点 线程安全的单例写法应该是怎么样的 概述 在G ...
- JMM和底层实现原理
- intellij idea Entity类报错“Cannot resolve table”
https://blog.csdn.net/u014290233/article/details/54311954 转载,以便下次查看