<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次

而用事务来处理,直接把所有数据存储到内存中,然后一次写入到数据库里

 

posted on 2021-09-03 19:02  Danile97  阅读(110)  评论(0编辑  收藏  举报