HarmonyOS 应用开发之通过键值型数据库实现数据持久化

场景介绍

键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备类型,因此推荐使用键值型数据库持久化此类数据。

约束限制

  • 设备协同数据库,针对每条记录,Key的长度≤896 Byte,Value的长度<4 MB。

  • 单版本数据库,针对每条记录,Key的长度≤1 KB,Value的长度<4 MB。

  • 每个应用程序最多支持同时打开16个键值型分布式数据库。

  • 键值型数据库事件回调方法中不允许进行阻塞操作,例如修改UI组件。

接口说明

以下是键值型数据库持久化功能的相关接口,大部分为异步接口。异步接口均有callback和Promise两种返回形式,下表均以callback形式为例。

接口名称 描述
createKVManager(config: KVManagerConfig): KVManager 创建一个KVManager对象实例,用于管理数据库对象。
getKVStore<T>(storeId: string, options: Options, callback: AsyncCallback<T>): void 指定Options和storeId,创建并得到指定类型的KVStore数据库。
put(key: string, value: Uint8Array|string|number|boolean, callback: AsyncCallback<void>): void 添加指定类型的键值对到数据库。
get(key: string, callback: AsyncCallback<Uint8Array|string|boolean|number>): void 获取指定键的值。
delete(key: string, callback: AsyncCallback<void>): void 从数据库中删除指定键值的数据。

开发步骤

  1. 若要使用键值型数据库,首先要获取一个KVManager实例,用于管理数据库对象。示例代码如下所示:

    Stage模型示例:

    // 导入模块
    import distributedKVStore from '@ohos.data.distributedKVStore';
    
    // Stage模型
    import window from '@ohos.window';
    import UIAbility from '@ohos.app.ability.UIAbility';
    import {
          BusinessError } from '@ohos.base';
    
    let kvManager: distributedKVStore.KVManager | undefined = undefined;
    
    export default class EntryAbility extends UIAbility {
         
      onCreate() {
         
        let context = this.context;
        const kvManagerConfig: distributedKVStore.KVManagerConfig = {
         
          context: context,
          bundleName: 'com.example.datamanagertest'
        };
        try {
         
          // 创建KVManager实例
          kvManager = distributedKVStore.createKVManager(kvManagerConfig);
          console.info('Succeeded in creating KVManager.');
          // 继续创建获取数据库
        } catch (e) {
         
          let error = e as BusinessError;
          console.error(`Failed to create KVManager. Code:${
           error.code},message:${
           error.message}`);
        }
      }
    }
    if (kvManager !== undefined) {
         
       kvManager = kvManager as distributedKVStore.KVManager;
      //进行后续操作
      //...
    }
    

    FA模型示例:

    // 导入模块
    import distributedKVStore from '@ohos.data.distributedKVStore';
    
    // FA模型
    import featureAbility from '@ohos.ability.featureAbility';
    
    let kvManager: distributedKVStore
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值