持久化
学过操作系统的都知道。
保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。数据持久化就是将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,防止数据丢失。
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对象关系映射:使用的编程语言是面向对象语言,使用的数据库时关系型数据库,将面向对象的语言和面向关系的数据库之间建立一种映射关系,就是对象关系映射了。
相关阅读
数据透视表 数据透视表是一种类似于Groupby的操作方法,常见于Excel与类似的表格应用中。数据透视表将每一列作为输入,输出将数据不
数据分析及统计对开设淘宝店铺的意义是什么?大部分的淘宝店铺都会去做淘宝数据分析及统计,都是因为淘宝数据分析对店铺有帮助才会
在移动互联网快速发展,大量APP不断涌现,各行业、各领域竞争越来越激烈的的情况下,如何才能够自己的APP脱颖而出?如何获得更多的用户以
大白NB-IOT 移远BC28模块模组快速入门 (教您10分钟打通
今天大白来为大家详细介绍我们的大白BC28评估板的快速入门指南。 文末有彩蛋!!!
前言数据