<1>数据库的创建和升级(更新)
——数据库的创建,我们首先需要查看SqliteOpenhelper类
然后开始创建:
1:新建一个类去继承SqliteOpenhelper类,重写其中的方法
(这个类中除了构造方法用于创建新数据库之外,还有两个要重写的方法很重要
第一个是onCreate()方法,在第一次创建数据库的时候会被调用,一般用于创建数据库中的表,用来初始化数据库
第二个是onUpgrade()方法,在数据库版本更新时会被调用,要改变数据库的版本号,使新版本号不同于旧版本号,在这个方法里一般对数据库中的表的结构进行修改
需要注意的是,版本只能升级,不能降级,降级会报错
)
2:实现其中的构造方法
3:在主方法中创建这个子类对象,再调用该对象的getReadableDatabase()/getWriteableDatabase()方法,即可创建数据库
4:这样虽然创建了数据库,但是在数据库中是没有数据也没有表的,所以我们一般在创建数据库的时候在onCreate()方法里创建表
——数据库的更新
数据库的升级更新也是通过在继承SqliteOpenhelper类的新类中,重写onUpgrade()方法来实现的
在创建和更新完数据库之后,我们可以在AS中找到手机里存储的数据库
打开AS中的View菜单,选择Tool windows,打开Decice File Explorer
在其中找到data/data/com.example.databasedemo/databases
该目录下就保存着我们新创建的数据库文件
可以导出到电脑中,用相应的数据库界面操作软件查看
<2>对数据库中数据进行操作的DAO类
在开发中,一般会创建一个DAO类,这个类存的是一些方法,用于对数据库中数据进行 增删改查
——DAO类的创建格式一般都是固定的,如下:
——然后我们来完善 增删改查 四个方法里的内容
<3>利用Android自带的API进行增删改查操作
——增:db.insert(表的名称,null,要加入的数据);
其中,要添加的数据是键值对的形式,我们可以创建一个
ContentValues values = new ContentValues();
如何往里添加数据
values.put(字段1的名称,字段1的值);
values.put(字段2的名称,字段2的值);
...
最后把values带入方法中的参数即可
——删:db.delete(表名,null,null);
——改:db.update(表名,要改的数据键值对,null,null);
——查:Cursor cursor = db.query(表名,null,null,null,null,null,null);
获得游标,然后按上面的方法遍历即可
<4>数据库事务:
数据库事务是非常重要的一个功能,主要体现在两个方面:
——1:安全性
使用事务可以避免一些突发情况导致的数据异常
例如公司从账户上给你打钱发工资,你的账户余额应该增长,公司的账户余额应该减少
如果中途突然停电了,那么传统的数据库可能会出现公司余额减少,但你的余额还并未增长的情况
这时用事务就可以有效避免这种情况(事务就类似于Java中的事务锁)
db.beginTransaction(); //打开事务锁
try{
操作语句...
db.setTransactionSuccessful(); //操作成功,未发生中断
}catch(异常){
}finally{
db.endTransaction(); //关闭事务锁
db.close();
}
——2:高效性
例如我们往数据库中添加10000条数据
直接用for循环耗时很慢
用事务就效率很快
因为在没有事务的情况下,执行的操作为 打开数据库->插入数据->关闭数据库 依次执行10000次
而用事务来处理,直接把所有数据存储到内存中,然后一次写入到数据库里