HarmonyOS-实现数据的持久化存储
HarmonyOS-实现数据的持久化存储
目录
关系型数据库
初始化数据库
数据库内的增删改逻辑
新增
rdbStore库中提供的insert方法用来新增数据操作
修改
Predicates可以理解为where,修改数据的条件
删除
查询
第一步构建查询条件
第二步解析查询结果
this.tableName为直接指定表名
query:是查询的方法
注:
(1).查询到的结果是一个promise,因为查询需要耗时,是一个异步方法,如果需要立刻拿到结果,需要在前面加上await来等待查询结果
(2).拿到的数据,是一个结果集,需要解析
(3).需要定义一个数组,来遍历分解这个结果集
4).getLong方法用来获取id数据,因为是一个整数,getString方法来获取name,因为name是一个字符串,getColumnIndex(‘ID’)用来获取这一列的数据ID数据,然后将这一行结果封装到一个结果集tasks.push({id,name})返回给数组
5).拿到的表,实际上存在一个-1行,因此需要goToNextRow走到下一行来读取数据
6).事实上是不存在这张表的,数据全都存在于一个黑盒中,我们看不到
外部对数据库进行增删改查
结构:数据的增删改查代码都要放到ets目录下的model文件中,新建一个ets文件,该文件内容如下:在一个class类中包含以下方法,初始化数据库(初始化表),查询表,新增表,更新表,删除表,最后将这个表的对象创建出来,然后做一个导出
首先把关系型数据库的包导入
初始化数据库
①初始化数据库方法里定义一个const config文件,一个是name(rdb数据库对应的文件名),另一个是安全级别securityLevel的一个枚举,securityLevel:relationStore.SecurityLevel.S1
②sql语句:建表语句const sql = ‘sql语句’
③获取rdb:传进三个参数,上下文context,工具类中的config,一个回调(由于可能出现异常,第三个参数写成(err,rdbStore))
由于接下来的增删改查操作不会再重写一遍以上操作,所以把rdbStore记录到成员变量的位置,方便下面的直接引用
查询数据操作
①构建查询条件
直接指定一个成员变量,值为这张表TASK
②查询
③解析查询结果
总体代码:
新增数据操作
更新数据操作
删除数据操作
何时创建表
前提
先导包,TaskModel包
在页面刚启动时就要创建数据库建表,因此在EntryAbility入口文件里,onCreate方法中调用initTaskDB方法初始化表
接下来就要进到TaskList页面,对数据库列表执行增删改查操作
下面是查询操作
查询完数据,拿到数据后,调用handleTaskChange函数对数据库表的数据更新操作
查询完后就新增数据:
改查操作与以上是相同的步骤.
总结
利用数据库可以对大量数据进行持久化的储存,保证数据存储的完整性
谢谢老爷们的观看,我会持续更新,共同进步!为鸿蒙的建设贡献自己绵薄的力量,鸿蒙千帆起!