中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
现在网上虽然有关于kv键值数据库的封装案例,但是和我需要的有点差距,所以我重新封装了一个
源码如下
import { distributedKVStore } from '@kit.ArkData'; import { bundleManager } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { BusinessError } from '@kit.BasicServicesKit'; const TAG = "[sqlutil]" export default class KVUtils { private kvManager: distributedKVStore.KVManager | undefined = undefined; private context = getContext(this); private kvStore: distributedKVStore.SingleKVStore | undefined = undefined; private bundleName: string = 'com.zzx.aaaatest'; constructor() { let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT; bundleManager.getBundleInfoForSelf(bundleFlags, (err, data) => { this.bundleName = data.name; const kvManagerConfig: distributedKVStore.KVManagerConfig = { context: this.context, bundleName: this.bundleName }; this.kvManager = distributedKVStore.createKVManager(kvManagerConfig); const options: distributedKVStore.Options = { createIfMissing: true, //数据库文件不存在时是否创建数据库 backup: false, //是否备份数据库文件 autoSync: false, //是否自动同步 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, //数据库类型 encrypt: true, //是否加密 securityLevel: distributedKVStore.SecurityLevel.S1//安全等级 }; //获取kvStore实例 this.kvManager.getKVStore<distributedKVStore.SingleKVStore>(`harmony_utils_store`, options, (err, store: distributedKVStore.SingleKVStore) => { if (err) { //获取失败 return; } //获取成功 this.kvStore = store; }); }) } //向数据库中写入数据 async put(key: string, value: string | number | boolean) { this.kvStore!.put(key, value, (err: BusinessError) => { if (err != undefined) { console.error(TAG, `Failed to put.code is ${err.code},message is ${err.message}`); return; } console.info(TAG, "Succeeded in putting"); }); } async get(key: string): Promise<boolean | string | number | Uint8Array | null> { try { const data = await this.kvStore!.get(key); console.info(TAG, `Succeeded in getting data.data=${data}`); return data; } catch (err) { const error = err as BusinessError; console.error(TAG, `Failed to get. code is ${error.code}, message is ${error.message}`); return null; } } //删除key对应的数据 delete(key: string) { this.kvStore!.delete(key, (err) => { if (err !== undefined) { hilog.error(0x0000, 'KVUtils', `Failed to delete data. Code:${err.code},message:${err.message}`); return; } hilog.info(0x0000, 'KVUtils', 'Succeeded in deleting data.'); }); } } export let kvUtil = new KVUtils()
在需要使用的页面中直接导入
import { kvUtil } from './sqlutil'; Button("存入") .onClick(() => { kvUtil.put("name","xiaopacai") }) Button("取出") .onClick(async () => { let data =await kvUtil.get("name") console.log("name:",data) this.text =`${data}` })
终端打印: 手机屏幕:
微信扫码分享
手动同步到其他设备的有封装嘛
这个暂时还没有
手动同步到其他设备的有封装嘛
这个暂时还没有