数据持久化
数据持久化是将数据存储到磁盘上. andrlid的存储话方案有两个,一个是文件的方式,另外一个是SQLite关系数据库.
文件就是java的io流.我们关注的是SQLite.
SQLite的创建与升级
在android中,提供了一个SQLiteOpenHelper类来对数据库进行创建和升级.不过这个类是抽象的,他有四个重要的方法需要继承者实现.一个是onCreate(),一个是onUpgrade() 负责创建和升级.
getReadableDatabase(),和getWritableDatabase() 是可以创建和打开数据的,没有就创建,有就打开.
SQLiteOpenHelper有两个构造方法,一般四个参数的构造方法以及可以满足需要,第一个是Contenx;第二个是数据库名称;第三个是Cusor,用于查询返回,一般传入null;第四个是数据库版本号,用于数据库升级.
SQLiteOpenHelper创建实例后,创建的文件存储与/data/data/package name/databases. 重写的oncreate方法会执行,可以处理一些创建表的逻辑.需要注意的是,数据库一旦创建成功,下次在执行代码,onCreate()代码不会在执行,所以后面如果要在新增表,可以写在onUpgrade里.但只这样还不行,在第一次执行时,传入的数据库版本号是1,第二次执行传入2,这样onUpgrade就会执行了.
数据的CRUD操作
C是创建,R是查询,U是更新,D删除. 这是数据库的操作. 通常需要SQL来操作.不过androi提供了一些操作接口,加入下面是以及创建了一个book表的mydb.db.
MyDatabaseHelper dbHelper=new MyDatabaseHelper(this,"mydb.db",null,1);
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values = new ContenValues();
values.put("列名","列值");
//插入
db.insert("表名",null,values);
values.clear();
//更新
values.put("列名","要更新的值");
//更新,第三个参数是条件,第四个是条件值数组
db.update("表名",values,"name=?",new String[]{"条件值1 条件值2 条件值3"})
//删除
db.delete("表名","pages>?",new String[]{"100"})
//查询
查询的函数方法比较多,还是直接使用sql操作比较简单
//sql操作
db.execSQL("SQL 脚本");
db.execSQL("select * from table where namn=?",new String[]{"条件1 条件2"})
LitePal
对sqlite的进一步封装。