四大组件之ContentProvider 第4节 ContentProvider的数据存储

更新时间 修改意见
2016-08-02 陈敏

第4节 ContentProvider的数据存储

ContentProvider的数据存储经常使用SQL实现,当然也可以采用别的存储机制。

假设这个ContentProvider需要这样一个数据表:

_id name price
1 book0 15
2 book1 13
3 book2 18

4.1 SQL实现数据存储

4.1.1 创建数据库

Android SDK提供了SQLiteOpenHelper来方便开发者使用SQL数据库。

  1. 继承SQLiteOpenHelper,创建我们的帮助类,

  2. 在构造函数中,创建数据库,指定数据库的名字和版本号,

  3. onCreate()函数中,根据前面的表格设计,创建SQL数据表,

  4. 当数据表的结构发生变化时,需要对原来数据表进行升级。这里只是简单的删除以前存在的表格,再重新创建一个表格。在实际的商用软件中,要考虑到数据库表格的变化,把以前老数据表中的数据,逐一转存到新的数据表当中。[注:sqlite不支持简单的drop column]

4.1.2 为ContentProvider添加SQL支持

修改MyContentProvider的增删改查函数,使用数据库实现对数据的操作。

  1. onCreate(),创建SQL帮助类,

  2. insert(),插入数据,

  3. delete(),删除数据,

  4. update(),更新数据,

  5. query(),查询数据,

SQLiteOpenHelper可以直接使用ContentProvider传入的SQL命令,方便开发者灵活的操作数据。

  1. SQLiteOpenHelpergetReadableDatabase()获取读取数据库的能力;
  2. SQLiteOpenHelpergetWritableDatabase()获取写入数据库的能力。

4.2 其他方式的数据存储

除了SQL,还可以使用别的方式存储数据,例如文本文件,甚至链表。

对于不使用SQL的实现方式,query()函数要返回Cursor对象,那么可以使用MatrixCursor,例如,


/**************************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。
/
**************************************************************************/