【鸿蒙实战开发】关系型数据库(RelationalStore)

基本概念

关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等,由于数据之间有较强的对应关系,复杂程度比键值型数据更高,此时需要使用关系型数据库来持久化保存数据。

接口说明

以下是关系型数据库持久化功能的相关接口,大部分为异步接口。异步接口均有callback和Promise两种返回形式,下表均以callback形式为例,更多接口及使用方式请见关系型数据库。

在这里插入图片描述

快速使用指南

1. 导入模块

import relationalStore from '@ohos.data.relationalStore'; // 导入模块 

2. 获得一个相关的RdbStore

在项目文件中的EntryAbility

在这里插入图片描述

在该代码的生命周期函数onWindowStageCreat中添加代码:

const STORE_CONFIG = {
      name: 'RdbTest.db', // 数据库文件名
      securityLevel: relationalStore.SecurityLevel.S1 // 数据库安全级别
    };

    relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => {
      if (err) {
        console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
        return;
      }
      console.info(`Succeeded in getting RdbStore.`);

    });

relationalStore.getRdbStore接口说明:

getRdbStore(context: Context, config: StoreConfig, callback: AsyncCallback): void

获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用callback异步回调。

参数

在这里插入图片描述

在该代码中:STORE_CONFIG为数据库的配置参数,更详细的说明在官方文档,在执行getRdbStore时,需要提供context,以及配置参数。

当执行getRdbStore后,通过回调函数获取到RdbStore(store)对象,该对象可以用来操作数据库,如创建数据库,增删改查、创建数据表等操作。

注意:

●应用创建的数据库与其上下文(Context)有关,即使使用同样的数据库名称,但不同的应用上下文,会产生多个数据库,例如每个UIAbility都有各自的上下文。
●当应用首次获取数据库(调用getRdbStore)后,在应用沙箱内会产生对应的数据库文件。使用数据库的过程中,在与数据库文件相同的目录下可能会产生以-wal和-shm结尾的临时文件。此时若开发者希望移动数据库文件到其它地方使用查看,则需要同时移动这些临时文件,当应用被卸载完成后,其在设备上产生的数据库文件及临时文件也会被移除。

3. 创建RdbUtils工具包

为了方便我们后面在UI中操作数据库,我们在项目文件中创建common/rdbUtils/RdbUtils.ts文件,作为数据库操作工具包:

在这里插入图片描述

代码如下:

import relationalStore from '@ohos.data.relationalStore';
export default class RdbUtils {
  private static rdbStore: relationalStore.RdbStore;
  static setStore(store: relationalStore.RdbStore) {
    RdbUtils.rdbStore = store;
  }
  static getStore(): relationalStore.RdbStore {
    return RdbUtils.rdbStore;
  }
}

之后,我们需要在刚才的EntryAbility中的生命周期函数onWindowStageCreat中添加RdbUtils.setStore(store),代码如下:

const STORE_CONFIG = {
      name: 'RdbTest.db', // 数据库文件名
      securityLevel: relationalStore.SecurityLevel.S1 // 数据库安全级别
    };

    relationalStore.getRdbStore(this.context, STORE_CONFIG, (err, store) => {
      if (err) {
        console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.mess
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值