目录

HarmonyOS-实现数据的持久化存储

HarmonyOS-实现数据的持久化存储

目录


关系型数据库

初始化数据库

https://i-blog.csdnimg.cn/blog_migrate/96f290ced18d1a3f47bbb8db3fe4e7b6.png

数据库内的增删改逻辑

新增

https://i-blog.csdnimg.cn/blog_migrate/b2fa3111633d329f71ea8fbca26bf29d.png

rdbStore库中提供的insert方法用来新增数据操作

修改

https://i-blog.csdnimg.cn/blog_migrate/c7191957d698d9879319635e1c00b6d0.png

Predicates可以理解为where,修改数据的条件

删除

https://i-blog.csdnimg.cn/blog_migrate/28b5f2cc89852b69eccde9ec148ffdf4.png

查询

第一步构建查询条件

第二步解析查询结果

this.tableName为直接指定表名

https://i-blog.csdnimg.cn/blog_migrate/91db79b4acacd426473f39cbdf5bfe83.png

query:是查询的方法

注:

(1).查询到的结果是一个promise,因为查询需要耗时,是一个异步方法,如果需要立刻拿到结果,需要在前面加上await来等待查询结果

(2).拿到的数据,是一个结果集,需要解析

(3).需要定义一个数组,来遍历分解这个结果集

https://i-blog.csdnimg.cn/blog_migrate/5b4eb866088ce90f747df232ac41afb9.png

4).getLong方法用来获取id数据,因为是一个整数,getString方法来获取name,因为name是一个字符串,getColumnIndex(‘ID’)用来获取这一列的数据ID数据,然后将这一行结果封装到一个结果集tasks.push({id,name})返回给数组

5).拿到的表,实际上存在一个-1行,因此需要goToNextRow走到下一行来读取数据

6).事实上是不存在这张表的,数据全都存在于一个黑盒中,我们看不到

https://i-blog.csdnimg.cn/blog_migrate/10a575e304b18ba88ecd99602f9aef16.png

外部对数据库进行增删改查

结构:数据的增删改查代码都要放到ets目录下的model文件中,新建一个ets文件,该文件内容如下:在一个class类中包含以下方法,初始化数据库(初始化表),查询表,新增表,更新表,删除表,最后将这个表的对象创建出来,然后做一个导出

https://i-blog.csdnimg.cn/blog_migrate/e1542ec373d79f43d0dc6968157742a8.png

首先把关系型数据库的包导入

https://i-blog.csdnimg.cn/blog_migrate/810d22808e32d4a1b723fdbb59563f78.png

初始化数据库

①初始化数据库方法里定义一个const config文件,一个是name(rdb数据库对应的文件名),另一个是安全级别securityLevel的一个枚举,securityLevel:relationStore.SecurityLevel.S1

②sql语句:建表语句const sql = ‘sql语句’

③获取rdb:传进三个参数,上下文context,工具类中的config,一个回调(由于可能出现异常,第三个参数写成(err,rdbStore))

由于接下来的增删改查操作不会再重写一遍以上操作,所以把rdbStore记录到成员变量的位置,方便下面的直接引用

https://i-blog.csdnimg.cn/blog_migrate/18e464ff60c29b1577d304cd743e444e.png

https://i-blog.csdnimg.cn/blog_migrate/22adf385f67231e19445939ec5ef36bf.png

查询数据操作

①构建查询条件

直接指定一个成员变量,值为这张表TASK

https://i-blog.csdnimg.cn/blog_migrate/8330c9159897dbd7094e5d239733fa6e.png

https://i-blog.csdnimg.cn/blog_migrate/37b3de6c239592699b8202c29de18a82.png

②查询

https://i-blog.csdnimg.cn/blog_migrate/e827f207a812195e369e0e02099fcdd7.png

③解析查询结果

https://i-blog.csdnimg.cn/blog_migrate/fca57e0f42d83d93ed687c880b7d0595.png

总体代码:

https://i-blog.csdnimg.cn/blog_migrate/d2c38474e0a03fc03cc1400ffa2c4ca3.png

新增数据操作

https://i-blog.csdnimg.cn/blog_migrate/88293296f1228aead1b20f367ec831fd.png

更新数据操作

https://i-blog.csdnimg.cn/blog_migrate/cd6bf4318e17306c80eb49b81aa5276a.png

删除数据操作

https://i-blog.csdnimg.cn/blog_migrate/38a574d6beb860a1f81841e33d2e1d23.png

何时创建表

前提

先导包,TaskModel包

https://i-blog.csdnimg.cn/blog_migrate/24681d270417e90d061bd984a8bbb3ce.png

在页面刚启动时就要创建数据库建表,因此在EntryAbility入口文件里,onCreate方法中调用initTaskDB方法初始化表

https://i-blog.csdnimg.cn/blog_migrate/937f76bcdcc75ef2e95e16f024a08669.png

接下来就要进到TaskList页面,对数据库列表执行增删改查操作

下面是查询操作

https://i-blog.csdnimg.cn/blog_migrate/9def11b47c9ff26ba5f6ad5e8d0bbb8a.png

查询完数据,拿到数据后,调用handleTaskChange函数对数据库表的数据更新操作

https://i-blog.csdnimg.cn/blog_migrate/eabc5cb6a9859a528db0603dbac17882.png

查询完后就新增数据:

https://i-blog.csdnimg.cn/blog_migrate/ac2e440bf679f267e276614c1e3a3804.png

改查操作与以上是相同的步骤.

总结

利用数据库可以对大量数据进行持久化的储存,保证数据存储的完整性

谢谢老爷们的观看,我会持续更新,共同进步!为鸿蒙的建设贡献自己绵薄的力量,鸿蒙千帆起!