数据持久化
-
文件存储
-
openFileOutput、openFileInput
-
两个参数,第一个参数是不能包含路径的文件名,第二个是读写的模式,一般默认,会覆盖文件原有的内容。
-
-
SharedPreferences存储
-
通过上下文获取对象
-
写:获取editor对象,调用put方法的重载,最后apply提交
-
读:直接通过sp对象读取
-
-
SQLite 数据库
-
android内置的轻型数据库
-
使用:
-
创建一个类继承SQLiteHelper 实现需要实现的方法,其中onCreate会在数据库第一次被创建的时候调用,所以只会调用一次,通常用于创建初始的表,而onUpdate方法用于以后版本有更新的时候调用,用于增添表,根据版本号来判断是否调用
-
SQLiteHelper 的实现类对象调用getReadableDatabase()或者getWritableDatabase()方法来打开或者创建数据库并返回一个队数据库可读可写的对象,前者当内存不可写时会返回一个只能读的对象,而后者直接报错
-
最少4个参数的构造方法中,第一个是上下文context,第二个是数据名,第三个是自定义cursor,传入null就可以了,最后一个是版本号,版本号会影响onUpdate的调用
-
数据库读写对象可以直接通过方法对数据库进行CRUD操作
-
insert:参数为:表名,null,ContentValues。而最后一个是类似于map一样的类,用于存储键值对,其中键是表中的字段,值是要插入的值,这个对象的clear方法用于清除上一次添加的数据,方便下次再添加
-
update:参数为:表名,ContentValues,约束1,约束2. 后面两个参数用于约束更新的行数,不写默认更新所有
-
delete:参数为:表名,约束1,约束2
-
query:参数:表名,列约束,行约束1,行约束2,group by,过滤,排序方式。返回结果是一个Cursor对象
-
调用Cursor对象的moveToFirst和moveToNext方法和getXxxx(index)、getColumnIndex(字段名)对返回结果进行遍历得到查询的数据
-
最后cursor要进行关闭:cursor.close();
-
-
Android中也可以直接编写sql语句执行来操作数据库而不需要调用各种方法传递各种参数,例如编写了一条sql语句,直接调用数据库读写对象的execSQL方法就可以执行,在编写sql的时候可以使用预编译的写法,将sql语句中需要的参数先使用?占位符替代,然后再指定占位符的值。指定占位符的值要使用字符串数组,一个?对应一个值。特别的是,查询数据的方法使用的是rawQuery
-
-
-
LitePal,是一款Android开源的数据库框架,它采用对象关系映射的模式