当前位置: 首页 > news >正文

天津做网站费用重庆网站优化公司

天津做网站费用,重庆网站优化公司,动图生成器在线制作,做汽配外贸是在哪个网站做【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库 一、环境说明二、分布式键值数据库介绍三、示例代码加以说明四、小结 一、环境说明 DevEco Studio 版本#xff1a; API版本#xff1a;以12为主 二、分布式键值数据库介绍 KVStore简介#xff1a; 分布式键值数据库… 【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库 一、环境说明二、分布式键值数据库介绍三、示例代码加以说明四、小结 一、环境说明 DevEco Studio 版本 API版本以12为主 二、分布式键值数据库介绍 KVStore简介 分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口应用程序可将数据保存到分布式键值数据库中并可对分布式键值数据库中的数据进行增加、删除、修改、查询、同步等操作。该模块提供以下分布式键值数据库相关的常用功能 KVManager分布式键值数据库管理实例用于获取数据库的相关信息。KVStoreResultSet提供获取数据库结果集的相关方法包括查询和移动数据读取位置等。Query使用谓词表示数据库查询提供创建Query实例、查询数据库中的数据和添加谓词的方法。SingleKVStore单版本分布式键值数据库不对数据所属设备进行区分提供查询数据和同步数据的方法。DeviceKVStore设备协同数据库继承自SingleKVStore以设备维度对数据进行区分提供查询数据和同步数据的方法。 应用场景 键值型数据库存储键值对形式的数据当需要存储的数据没有复杂的关系模型比如存储商品名称及对应价格、员工工号及今日是否已出勤等由于数据复杂度低更容易兼容不同数据库版本和设备类型因此推荐使用键值型数据库持久化此类数据。 常用接口说明 键值型数据库持久化功能的相关接口大部分为异步接口。异步接口均有callback和Promise两种返回形式下表均以callback形式为例其他接口请查看官网分布式键值数据库接口说明 三、示例代码加以说明 沿用【鸿蒙HarmonyOS NEXT】页面之间相互传递参数博文中的代码进行测试。 使用场景说明用户信息需要在整个app中全局获取到需要将用户信息在登录的时候存储到分布式键值数据库中。 代码改写如下 LoginPage完整代码如下import { router } from kit.ArkUI;// 引入Context相关 import { common } from kit.AbilityKit; import { hilog } from kit.PerformanceAnalysisKit;// 引入preferences相关 import { distributedKVStore } from kit.ArkData; import { util } from kit.ArkTS; import { BusinessError } from kit.BasicServicesKit;// 定义ihlog日志常量相关 const TAG: string [LoginPage_Context]; const DOMAIN_NUMBER: number 0xFF00;Preview Entry Component struct LoginPage {State message: string 登录页;State btnMsg: string 登录;State account: string ; // 账号状态变量State password: string ; // 密码状态变量State isShowProgress: boolean false; // 显示进度指示器的状态变量// 获取Contextprivate context getContext(this) as common.UIAbilityContext;build() {Column() {Text(this.message).id(HelloWorld).fontSize(20).fontWeight(FontWeight.Bold).width(100%).height(50).textAlign(TextAlign.Center).backgroundColor(0xF1F3F5)Image($r(app.media.startIcon)).width(150).height(150).margin({ top: 40, bottom: 40 })TextInput({ placeholder: 请输入手机号 }).maxLength(11)// 最大长度.type(InputType.Number)// 输入类型为数字.inputStyle()// 应用自定义样式.onChange((value: string) {this.account value; // 更新账号状态})Line().lineStyle() // 应用自定义Line样式// 密码输入框TextInput({ placeholder: 请输入密码 }).maxLength(12)// 最大长度.type(InputType.Password)// 输入类型为密码.inputStyle()// 应用自定义样式.onChange((value: string) {// TODO: 生产环境需要使用正则表达式对手机号进行验证this.password value; // 更新密码状态})Line().lineStyle() // 应用自定义Line样式Button(this.btnMsg).width(80%).margin({ top: 100 }).height(50).onClick(() {if (this.account undefined || this.account ) {console.info(请输入账号)return}if (this.password undefined || this.password ) {console.info(请输入密码)return}// 使用ArkData分布式键值数据库 以Key/Value形式存储用户信息数据let kvManager: distributedKVStore.KVManager | undefined undefined;const kvManagerConfig: distributedKVStore.KVManagerConfig {context: this.context,bundleName: com.suben.hellotest};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;//进行后续操作let kvStore: distributedKVStore.SingleKVStore | undefined undefined;try {const options: distributedKVStore.Options {createIfMissing: true,encrypt: false,backup: false,autoSync: false,// kvStoreType不填时默认创建多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,// 多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION,securityLevel: distributedKVStore.SecurityLevel.S1};kvManager.getKVStoredistributedKVStore.SingleKVStore(storeId, options,(err, store: distributedKVStore.SingleKVStore) {if (err) {console.error(Failed to get KVStore: Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting KVStore.);kvStore store; // 请确保获取到键值数据库实例后再进行相关数据操作if (kvStore ! undefined) {kvStore kvStore as distributedKVStore.SingleKVStore;//进行后续操作如将用户信息插入数据库中进行保存const KEY_ACCOUNT account;const VALUE_ACCOUNT this.account;const KEY_PASSWORD password;const VALUE_PASSWORD this.password;try {kvStore.put(KEY_ACCOUNT, VALUE_ACCOUNT, (err) {if (err ! undefined) {console.error(Failed to put account data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in putting account data.);});kvStore.put(KEY_PASSWORD, VALUE_PASSWORD, (err) {if (err ! undefined) {console.error(Failed to put password data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in putting password data.);});} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});}}});} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});}}// 跳转到首页router.pushUrl({url: pages/HomePage,params: {account: this.account,password: this.password}})})}.height(100%).width(100%).padding(0)} }// TextInput组件的自定义样式扩展 Extend(TextInput) function inputStyle() {.placeholderColor(Color.Gray) // 占位符颜色.height(50) // 输入框高度.fontSize(15) // 字体大小.backgroundColor(0xF1F3F5) // 背景颜色.width(90%) // 宽度为父组件的100%.padding({ left: 12 }) // 左侧填充.margin({ top: 15 }) // 上方边距 }// Line组件的自定义样式扩展 Extend(Line) function lineStyle() {.width(100%) // 宽度为父组件的100%.height(1) // 高度.backgroundColor(0xF1F3F5) // 背景颜色 }HomePage完整代码如下import { router } from kit.ArkUI; import { distributedKVStore } from kit.ArkData; import { common } from kit.AbilityKit import { util } from kit.ArkTS; import { hilog } from kit.PerformanceAnalysisKit; import { BusinessError } from kit.BasicServicesKit;// 定义ihlog日志常量相关 const TAG: string [HomePage_Context]; const DOMAIN_NUMBER: number 0xFF01;Preview Entry Component struct HomePage {State message: string 首页;// 获取前一个页面传递过来的数据State account: string State password: string // 获取Contextprivate context getContext(this) as common.UIAbilityContext;aboutToAppear(): void {// 使用ArkData KV数据库 获取用户数据// this.account this.dataPreferences.getSync(account, default).toString(); // default 可以换成其他的如null但这个参数必须给// hilog.info(DOMAIN_NUMBER, TAG, account: ${this.account});// // 当获取的值为带有特殊字符的字符串时需要将获取到的Uint8Array转换为字符串// let uInt8Array2 : preferences.ValueType this.dataPreferences.getSync(password, new Uint8Array(0));// let textDecoder util.TextDecoder.create(utf-8);// this.password textDecoder.decodeToString(uInt8Array2 as Uint8Array);// hilog.info(DOMAIN_NUMBER, TAG, password: ${this.password});let kvManager: distributedKVStore.KVManager | undefined undefined;const kvManagerConfig: distributedKVStore.KVManagerConfig {context: this.context,bundleName: com.suben.hellotest};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;//进行后续操作let kvStore: distributedKVStore.SingleKVStore | undefined undefined;try {const options: distributedKVStore.Options {createIfMissing: true,encrypt: false,backup: false,autoSync: false,// kvStoreType不填时默认创建多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,// 多设备协同数据库kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION,securityLevel: distributedKVStore.SecurityLevel.S1};kvManager.getKVStoredistributedKVStore.SingleKVStore(storeId, options,(err, store: distributedKVStore.SingleKVStore) {if (err) {console.error(Failed to get KVStore: Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting KVStore.);kvStore store; // 请确保获取到键值数据库实例后再进行相关数据操作if (kvStore ! undefined) {kvStore kvStore as distributedKVStore.SingleKVStore;const KEY_ACCOUNT account;const KEY_PASSWORD password;// 获取账户kvStore.get(KEY_ACCOUNT, (err, data) {if (err ! undefined) {console.error(Failed to get ACCOUNT data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting ACCOUNT data. Data:${data});this.account data.toString()});//获取密码kvStore.get(KEY_PASSWORD, (err, data) {if (err ! undefined) {console.error(Failed to get PASSWORD data. Code:${err.code},message:${err.message});return;}console.info(Succeeded in getting PASSWORD data. Data:${data});this.password data.toString()});}});} catch (e) {let error e as BusinessError;console.error(An unexpected error occurred. Code:${error.code},message:${error.message});}}}build() {Column() {Text(this.message).fontSize(30).width(100%).height(50).textAlign(TextAlign.Center).backgroundColor(0xF1F3F5)Blank().height(120)Text(接收到的用户名${this.account}).fontSize(20).width(100%).height(50).padding({ left: 12, right: 12 })Text(接收到的密码${this.password}).fontSize(20).width(100%).height(50).padding({ left: 12, right: 12 })Button(返回上一页).width(80%).margin({ top: 120 }).height(50).onClick(() {// 返回登录页面router.showAlertBeforeBackPage({ message: 确认返回上一页吗 })router.back({url: pages/LoginPage,params: {msg: homepage}})})}.height(100%).width(100%)} } 测试步骤如下 3. 打开模拟器并将代码部署到模拟器上当模拟器正常运行代码后输入用户名和密码 点击手机模拟器上应用的登录按钮跳转到了首页然后再从首页返回登录页查看控制台日志内容如截图红色框或者首页文字所示 四、小结 通过上述的说明和示例演示相信大家已经很清楚分布式键值数据库读写数据的用法了。细心的读者朋友可能会问如何删除数据呢或者有何约束和限制呢感兴趣的读者朋友可以对照鸿蒙官网上的示例尝试下看看使用键值型数据库持久化此类数据是否可以正常运行呢欢迎大家的留言我们在留言区进行讨论。
http://www.dnsts.com.cn/news/114011.html

相关文章:

  • 合肥做网站多少钱海口网站制作策划
  • 奥特蛋的做网站做ic比较有名的网站
  • 中企动力网站建设 医疗深圳公租房
  • 昆明建网站电话wid2008vps创建网站
  • 北京手机网站搭建费用电商网站的分辨率
  • 前端开发学习网站汽车网站模板下载
  • 招聘网站建设深圳通辽做网站有没有
  • 用软件做的网站权限管理温州云海和联欣哪个做网站比较好
  • 怎么做视频解析网站吗网站怎么自己做推广
  • 做网站Linux山东省住房和城乡建设厅文件
  • 望京SOHO网站建设医院网站素材
  • 比尤果网做的好的网站wordpress微信风格主题
  • 杭州市建设工程公示网站外围网站做代理
  • 四川建设人才培训网站旅游网站建设公司排名
  • 如何做购物券网站手机商城下载app
  • 怎么做彩票网站wordpress reset
  • 企业网站源码git微信公众号开发用什么语言
  • 网站改版的影响企业网站建设要求
  • 茶楼网站汕头拿家做网站
  • 菏泽做网站多少钱吉林省绥中县城乡建设局网站
  • 个人网站备案内容网站升级方案
  • 网站链接结构买卖网交易平台
  • 超链接到网站怎么做视频文件下载网站开发是在电脑上打出来的资料么
  • 4s店网站建设压缩图片在线网站免费
  • 怎样学做网站win10网络服务都未运行
  • 做58网站空调维修接单怎么样宝安网站建设推广
  • 网页设计教程期末教程北京网站优化培训
  • 电商网站活动推广怎样才能做好网络推广
  • 免费建单页网站毕业设计网站只做前端行不行
  • 受欢迎的杭州网站建设微信盲盒小程序搭建