数据持久化

学过操作系统的都知道。

保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。数据持久化就是将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,防止数据丢失。

Android中数据持久化技术3种:文件存储、SharedPreference存储以及数据库存储。此外,还可以选择存储在手机的SD卡中。

1.文件存储:最基本的。不对存储内容进行任何的格式化处理,适合一些简单的文本数据或二进制数据。用Context类中提供的openFileOutput()方法将数据存储到指定的文件中。方法返回的是一个FileOutputStream对象,得到了这个对象之后就可以使用Java流的方式将数据写入到文件中了。


从文件中读取数据:使用Context类中的openFileInput()方法。参数只有一个,即读取的文件名,在上面默认的目录下加载这个文件,并返回一个FileInputStream对象,得到对象后通过Java流方式将数据读取出来。

2.SharedPreference存储

存储:使用键值对的方式存储数据。数据存的时候是什么类型,读取出来的也是什么类型。首先要获取SharedPreference对象


得到SharedPreferences对象之后,向SharedPreferences文件中存储数据,分3步:


读取数据:获取SharedPreferences对象,调用相应的get方法。

3.SQLite数据库存储

存储:数据量大,结构复杂的数据。

创建数据库:借助SQLiteOpenHelper帮助类(是抽象的)简单地对数据库进行创建和升级。创建一个类继承它,重写onCreate()和onUpgrade()方法,实现创建和升级数据库的逻辑。SQLiteOpenHelper类还提供getReadableDatabase()和getWritableDatabase()(这两个方法返回一个SQLiteDatabase对象)。这两个方法都可以创建或打开一个现有的数据库(如果数据库存在则直接打开,若不存在则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()则将抛出异常。SQLiteOpenHelper可重写4个参数的构造方法,构建出实例之后,再调用getReadableDatabase()和getWritableDatabase()就能够创建数据库了。数据库的文件会存放在/data/data/<package name>/databases/目录下。此时,重写的onCreate()方法也会得到执行,通常在这里处理一些创建表的逻辑。

数据库升级:onUpgrade(),若数据库已经创建过一次,不管再创建其他名字的数据库也好,都不会再执行创建数据库的语句。解决:可通过卸载程序的方法,能够创建新表,但做法比较极端。还可以运用升级功能解决这个问题。实例化SQLiteOpenHelper类的时候,传入参数大于1(之前的版本号),然后在onUpgrade()方法执行语句若当前数据库存在就删除,之后再执行创建新的数据库就可以了。

添加数据:insert()


更新数据:update()

删除数据:delete()

查询数据:query()7个参数,参数复杂,返回一个Cusor对象。

此外,还可以使用SQL操作数据库

4.使用LitePal开源库操作数据库

ORM对象关系映射:使用的编程语言是面向对象语言,使用的数据库时关系型数据库,将面向对象的语言和面向关系的数据库之间建立一种映射关系,就是对象关系映射了。





  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值