android 学习笔记 第五章 数据持久化

第五章 数剧的持久化

1. 文件(默认放在 data/data/"package_name"/files/ 下)

通过使用 Context 类的 openFileOutput 获得一个 OutPutStream 对象。
通过使用 Context 类的openFileInput 获得一个InputStream 对象。
然后进行java 的流操作即可

2. SharedPreference (默认放在data/data//shared_prefs/ 下)

使用键值对来进行数据存储;支持不同类型的数据存储
首先需要获取 SharedPreference 对象(三种方法)
   1) Context 类的 getSharedPreferences() 两个参数 名字 + 操作模式(目前只有MODE_PRIVATE可用)
   2) Activity 类的 getPreferences() 参数同上
   3)PreferenceManager 类的 getDefaultSharedPreferences() 接受一个Context 对象,并自动使用当前包名来命名文件
然后就是存储数据了,分为三步:
   1)调用 SharedPreferences 对象的 edit() 获得一个 Editor 对象
   2)向 Editor 对象中添加数据 使用方法 putBoolean(),putString() 类似
   3)调用 apply() 将数据移交,完成数据存储
最后是读取数据:
同样是获取 Preferences 对象,然后使用他的方法各种 get 方法获取数据
get 方法需要两个参数,第一个是键,第二个是找不到对应数据时的返回值

3. 数据库存储 (SQLite,内置,关系型数据库,支持 ACID 事物,所需资源特别少。)

文件存放在 data/data//database/ 目录下)
SQLiteOpenHelper 抽象类,需要我们自己去实现
有两个抽象方法 onCreate()  创建数据库
       onUpgrade()  升级数据库
有两个实例方法,都创建或者打开一个现有的数据库,并返回一个可以对数据库进行读写操作的对象
但是当数据不可读写时 getReadableDataBase()  返回一个只读方式的对象
          getWriteableDataBase()  出现异常

SQLite 数据类型 integer 整型,real 浮点型,text 文本,blob 布尔型

首先是创建数据库,需要用到DataBase的构造函数,创建一个数据库。
一般来说,使用四个参数的构造函数就已经足够
四个参数分别为 Context 数据库名字 一个Cursor返回值 以及版本号
当调用 getReadableDataBase 或者 getWriteableDateBase获取对象时,如果数据库中没有一张表,那么数据库的onCreate方法的到执行。如果传入的版本号大于上一个版本号的时候,那么数据库的onUpgrade 方法得到执行

CRUD
插入:获取 SQLiteDatabase 对象实例,插入数据需要一个 ContentValues 对象,组装数据,
   使用 insert 方法插入数据 ,三个参数 表名 可为 NULL 的列自动赋值为 NULL 数据
   db.insert("Book", null, values);
更改:获取 SQLiteDatabase 对象实例,更改数据也需要一个 ContentValues 对象,组装数据,
   四个参数 表名| 修改的值| where |后面的问句 上一个占位符的具体内容
   db.update("Book",values,"name = ?", new String[] {"The Da Vinci Code"});
删除:获取 SQLiteDatabase 对象实例
   三个参数 表名| 约束条件|后面的问句 |上一个占位符的具体内容
   db.delete("Book","pages > ?", new String[] {"500"});
查询:获取 SQLiteDatabase 对象实例,最少七个参数
   表名|列名|where约束条件|上一个占位符提供内容|groupby的列|对Groupby结果
   进一步约束|查询结果排序
   Cursor cursor = db.query("Book", null, null, null, null, null, null);
   返回一个 Cursor 对象

4. 使用 LitePal 操作数据库

配置: 在 app 目录下的 build 目录中添加对外部库的依赖(AS 自动检查,然后会自动从 jcenter 上下载库)
compile 'org.litepal.android:core:1.3.2' 1.3.2 是版本号 可以去官网查看最新版

然后在 main 目录下,新建目录 assets 然后在目录里面创建 litepal.xml 文件
在这个文件里使用 xml 语法声明数据库的具体形态
首先是一个 标签内声明数据库结构
声明数据库名称
声明数据库当前版本
然后在 标签内声明具体的 table 使用

这个地方需要一个实体类(操作数据需要继承 DataSupport 类),用来帮助创建具体的表

大概就是这个样子:


    
         
        
    
        
         
     

然后在 AndroidManifem..xml 文件的 标签内添加一行
android:name="org.litepal.LitePalApplication" 应该是引入某个文件或者包

创建: 使用 LitePal 操作数据库,就会自动创建数据库以及定义的表
更改表: 当 litepal.xml 文件的版本号呗更改的时候,就会重新进行创建,并且会保存以前的数据库
插入数剧: 新建实体类,然后设置他的属性,最后调用继承自 DataSupport 的 save() 即可。
更新数据:新建类,设置属性,保存。这个队形即为保存过的对象。
这个时候更改他的属性,然后再次调用
save() ,属性就会改变
还可以使用 updataAll()方法升级数据,两类参数,第一个为约束条件,以后的为约束条件中的占位符
删除数据:调用 DataSupport 的静态方法 deleteAll() 三参数,第一个为索要删除的数据的 .class 文件
第二个为约束条件,以后为约束条件中的在占位符
查询数据:DataSupport 有很多的查询方法 且可以实现连接的效果,进行多重约束。
find 查询的表 select 查询的行 where 约束条件 order 查询结果排序
limit 查询的项目数量 offset 偏移量

也可以使用 findBySQL 进行 SQL语句的查询,该方法返回一个 Cursor 对象

FirstCode 郭霖
整理 :tadecather 17/7/1

你可能感兴趣的:(android 学习笔记 第五章 数据持久化)