前言
数据量较少的持久化存储,我们可以选择用户首选项或者是分布式键值数据库进行操作,如果前两种无法满足,在鸿蒙当中,也给我们提供了关系型数据库进行数据之间的操作,和Android中类似,关系型数据库基于SQLite组件,提供了一套完整的对本地数据库进行管理的机制,也对外提供一系列的增、删、改、查等接口,非常的方便,为了针对数据更加方便的操作,目前对系统的Api做了一层简单的封装。
本篇的内容大致如下:
1、远程地址依赖
2、数据库创建和表创建
3、数据库增删改查
4、使用总结
一、远程地址依赖
在工程的oh-package.json5中设置三方包依赖,配置示例如下:
OpenHarmony三方库中心仓地址:
https://ohpm.openharmony.cn/#/cn/detail/@abner%2Fdatastore
二、数据库创建和表创建
1、数据库创建
数据库创建,在初始化的时候,会默认创建,在AbilityStage里初始化即可。
属性介绍
属性 | 类型 | 概述 |
context | Context | 上下文 |
storeConfig | relationalStore.StoreConfig | 数据库相关配置,可默认不传,会创建一个默认的abner_data.db数据库,securityLevel为S3,encrypt为true。 |
storeConfig
属性 | 类型 | 概述 |
name | string | 数据库文件名,也是数据库唯一标识符。 |
securityLevel | SecurityLevel | 设置数据库安全级别。 |
encrypt | boolean | 指定数据库是否加密,默认不加密。true:加密。false:非加密。 |
dataGroupId | string | 应用组ID,需要向应用市场获取。模型约束: 此属性仅在Stage模型下可用。从API version 10开始,支持此可选参数。指定在此dataGroupId对应的沙箱路径下创建RdbStore实例,当此参数不填时,默认在本应用沙箱目录下创建RdbStore实例。 |
customDir | string | 数据库自定义路径。使用约束: 数据库路径大小限制为128字节,如果超过该大小会开库失败,返回错误。 |
autoCleanDirtyData | boolean | 指定是否自动清理云端删除后同步到本地的数据,true表示自动清理,false表示手动清理,默认自动清理。 |
2、数据表创建
数据表的创建有两种方式,一种是sql语句执行,一种是对象形式执行。
sql语句执行
对象形式执行【推荐】
对象形式,弱化了sql语句,但本身还是以sql的形式进行创建数据表,只是业务层的操作,没有了sql操作,执行很是简单直观,第一个参数是数据表的名字也就是table_name,第二个参数是一个对象,也就是数据表的字段,每个字段,需要指定其数据类型等必要的参数,比如主键,自增,长度等等。
三、数据库增删改查
1、增
普通存储
需要定义ValuesBucket对象进行传递。
对象存储
2、删
普通删除
需要用RdbPredicates对象进行设置过滤条件,可以直接查看官网Api即可。
对象删除
和普通删除类似,只不过RdbPredicates对象做了简单封装,需要调用filterRdbPredicates方法进行设置过滤条件。
3、改
普通修改
对象修改
filterRdbPredicates方法为过滤条件,也就是你要更改哪一条数据。
4、查
普通查询
对象查询
获取全部
获取单个
5、filterRdbPredicates
在对象操作的增删改查中,这个方法忽视不得,可执行属性如下:
属性 | 类型 | 概述 |
orderByDesc | string | 配置谓词以匹配数据表的field列中值按降序排序的列。 |
orderByAsc | string | 配置谓词以匹配数据表的field列中值按升序排序的列。 |
limitAs | number | 设置最大数据记录数的谓词 |
offsetAs | number | 配置谓词以指定返回结果的起始位置 |
equalTo | {} | 配置谓词以匹配数据表的field列中值为value的字段。 |
notEqualTo | {} | 配置谓词以匹配数据表的field列中值不为value的字段 |
contains | {} | 配置谓词以匹配数据表的field列中包含value的字段 |
between | {} | 配置谓词以匹配数据表的field列中值在给定范围内的字段(包含范围边界),例如:low=high,必须要带等号。 |
四、使用总结
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
如下案例:
所有评论(0)