Android数据存储与IO之四(SQLite)
有些时候,我们会有部分的以某种固定格式存在的数据需要保存在手机内并且需要增删改查,这时候使用File和SharePreferences就显得太过与麻烦,为了解决这类问题,Android集成了一个轻量级的数据库SQLite,其作为一个嵌入式的数据库引擎,适用于资源有限的设备上适量数据存储,从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作,当用户打开一个SQLite数据库时,其实只是打开一个文件准备读写,因而对于大量的用户的并发储存,SQLite并不适用,毕竟手机还是手机,它的储存能力计算能力都不足以让其成为一个服务器的角色。
一般来说使用数据库分为三步 第一是加载驱动 第二是连接数据库,第三是操作数据库,但是在安卓中则不用那么麻烦,Android系统中提供了一个SQLiteOpenHelper抽象类其中封装了一些驱动,该类用于对数据库进行处理,该类中有三个常用方法:
onCreate 数据库创建时执行(第一次连接获取数据库对象执行)
onUpgrate 数据库版本号改变时执行
onOpen 数据库每次打开时执行,在onCreate和onUpgrate 之后执行
在操作过程中,建议将数据库,数据库中存储的数据类型,数据库的操作方法,以及展示界面等类分包存储,首先建立数据库,先新建一个以.db结尾的包并在其中新建一个继承了SQLiteOpenHelper抽象类类的类,继承后首先要写出构造方法:
PersonSQLiteOpenHelper(Context context 上下文
, String name 要建立的数据库的名称,不需加入绝对路径,需加入.db的后缀
, CursorFactory factory 游标工程 一般情况下为null
, int version 数据库的版本号,不能小于1
)
接下来就是创建一张表,说到创建表就不得不提到SQLite中的数据类型,SQLite的数据类型为无类型,你可以保存任何格式的数据到任何表的任何列中而不必在意其定义时到底定义该列为何种数据类型,因为SQLite在存储时将所有数据都以字符串的形式存储,只有一个特别interger primary key只能存储64位的整数,SQLite同时支持其他数据格式例如NULL,VARCHAR(字符类型),TEXT(文本类型),INTEGER(整数类型)等等,但是我们在创建表的时候依然要指明每一列的数据类型为的是防止在取出数据时因为不知道该处的数据类型而导致强制转换出错。
SQLite支持绝大部分SQL92语法,也允许开发者使用SQL语言操作数据库中的数据,SQLiteDatabase的execSQL方法可以执行任何SQL语句包括带占位符的语句
比如这样的创建语句 :create table person(_id integer primary key,name varchar(10),age integer);在写好后,我们可以在另外一个软件