Android开发(三)数据存储

Android系统提供了3种数据存储方式,分别是SharedPreferences、SQLite、File,数据存储在data/data/<包名>/目录下。

一、SharedPreferences

SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现

数据写入到SharedPreferences:

执行了这段代码之后,即在/data/data/<包名>/shared_prefs目录下生成一个Share.xml文件,一个应用可以创建多个这样的文件。

读取SharedPreferences中的数据:

二、SQLite

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。

SQLite只有5中数据类型,分别为NULL(空值)、INTEGER(整型)、REAL(浮点型)、TEXT(文本)、BLOB(大数据)。在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显示,为了能方便的操作DATE类型,SQLite提供了一组函数,详见:http://www.sqlite.org/lang_datefunc.html。这样简单的数据类型设计更加符合嵌入式设备的要求。关于SQLite的更多资料,请参看:http://www.sqlite.org/

不管第三个参数是否包含数据,执行Insert()方法必然会添加一条记录,如果第三个参数为空,会添加一条除主键之外其他字段值为Null的记录。Insert()方法内部实际上通过构造insert SQL语句完成数据的添加,Insert()方法的第二个参数用于指定空值字段的名称,相信大家对该参数会感到疑惑,该参数的作用是什么?是这样的:如果第三个参数values 为Null或者元素个数为0, 由于Insert()方法要求必须添加一条除了主键之外其它字段为Null值的记录,为了满足SQL语法的需要, insert语句必须给定一个字段名,如:insert into person(name) values(NULL),倘若不给定字段名 , insert语句就成了这样: insert into person() values(),显然这不满足标准SQL的语法。对于字段名,建议使用主键之外的字段,如果使用了INTEGER类型的主键字段,执行类似insert into person(personid) values(NULL)的insert语句后,该主键字段值也不会为NULL。如果第三个参数values 不为Null并且元素的个数大于0 ,可以把第二个参数设置为null。

三、File

Android的文件系统和其他平台的文件系统是类型。File对象适合用于存储大数据量的数据,比如图片、网络上的数据等。

Android文件存储分为两部分:内部存储(如手机内存)和外部存储(如SD卡)

1)内部存储

内部存储总是可用的,只有本应用可以访问内部存储区域的数据,当用户卸载了应用的时候,内部存储区域的数据就会随之删除

2)外部存储

外部存储不一定总是可用的,因为有时候可能会被移除,所以在使用外部存储之前需要判断是否可用。外部存储中的数据是对外公开的,其他的应用也可以访问,当用户卸载应用的时候,系统只会删除存储在通过getExternalFilesDir()方法返回的目录下的数据。

外部存储需要在AndroidManifest.xml加入权限

此条目发表在Android分类目录。将固定链接加入收藏夹。

发表评论