【鸿蒙】单版本分布式数据库实战

简介: 周末如期而至,学习也不能停止,分布式数据库实战搞起!1).要使用分布式的化首先就得打开权限,在config.json中添加permisssion权限。

周末如期而至,学习也不能停止,分布式数据库实战搞起!

1).要使用分布式的化首先就得打开权限,在config.json中添加permisssion权限。

"reqPermissions": [{
      "name": "ohos.permission.DISTRIBUTED_DATASYNC"
    }
    ],

这段代码添加在abilities同一目录层级

2).再将权限调用放在onstart方法里面


requestPermissionsFromUser(new String[]{"ohos.permission.DISTRIBUTED_DATASYNC"},0);

1.UI布局

默认文件ability_main的xml代码,五个按钮

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:background_element="#FF34D2BA"
    ohos:orientation="vertical">
    <DependentLayout
        ohos:height="50vp"
        ohos:width="match_parent"
        ohos:left_margin="30vp"
        ohos:right_margin="30vp"
        ohos:top_margin="30vp"
        ohos:background_element="$graphic:background">
        <Button
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:id="$+id:write_button"
            ohos:text="分布式写数据"
            ohos:text_size="20vp"
            ohos:text_color="#9b9b9b"
            ohos:top_padding="10vp"
            />
    </DependentLayout>
    <DependentLayout
    ohos:height="50vp"
    ohos:width="match_parent"
    ohos:left_margin="30vp"
    ohos:right_margin="30vp"
    ohos:top_margin="30vp"
    ohos:background_element="$graphic:background">
    <Button
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:id="$+id:delete_button"
        ohos:text="分布式删除数据"
        ohos:text_color="#9b9b9b"
        ohos:text_size="20vp"
        ohos:top_padding="10vp"
        />
    </DependentLayout>
    <DependentLayout
    ohos:height="50vp"
    ohos:width="match_parent"
    ohos:left_margin="30vp"
    ohos:right_margin="30vp"
    ohos:top_margin="30vp"
    ohos:background_element="$graphic:background">
    <Button
    ohos:height="match_content"
    ohos:width="match_parent"
    ohos:id="$+id:read_button"
    ohos:text="分布式读取数据"
    ohos:text_color="#9b9b9b"
    ohos:text_size="20vp"
    ohos:top_padding="10vp"
        />
    </DependentLayout>
    <DependentLayout
        ohos:height="50vp"
        ohos:width="match_parent"
        ohos:left_margin="30vp"
        ohos:right_margin="30vp"
        ohos:top_margin="30vp"
        ohos:background_element="$graphic:background">
        <Button
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:id="$+id:close_button"
            ohos:text="分布式关闭数据"
            ohos:text_color="#9b9b9b"
            ohos:text_size="20vp"
            ohos:top_padding="10vp"
            />
    </DependentLayout>
    <DependentLayout
        ohos:height="50vp"
        ohos:width="match_parent"
        ohos:left_margin="30vp"
        ohos:right_margin="30vp"
        ohos:top_margin="30vp"
        ohos:background_element="$graphic:background">
        <Button
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:id="$+id:del_button"
            ohos:text="删除分布式数据库"
            ohos:text_color="#9b9b9b"
            ohos:text_size="20vp"
            ohos:top_padding="10vp"
            />
    </DependentLayout>
</DirectionalLayout>

包括按钮的形状

<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
       ohos:shape="rectangle">
    <solid ohos:color="#ffffff"/>
    <stroke ohos:width="3vp"
            ohos:color="#ffffff"
            />
    <corners ohos:radius="20vp"/>
</shape>


2.注入灵魂

Ctrl c+v一顿操作




我们可以看一看options当中的默认值



然后随便打印几个出来


接下来就自定义,有的不需要默认值,我们就修改

 options.setCreateIfMissing(true)
         .setEncrypt(false)
         .setKvStoreType(KvStoreType.SINGLE_VERSION);

响应代码

public void onClick(Component component) {
            int componentId = component.getId();
            switch (componentId) {
                case ResourceTable.Id_write_button: {
                    //写入数据
                    try {
                        singleKvStore.putString("test", "wo ai huawei");
                        System.out.println("======写入数据");
                        Tools.showTip(MainAbilitySlice.this,"写入数据成功");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
                case ResourceTable.Id_del_button: {
                    //删除数据
                    try {
                        singleKvStore.delete("test");
                        System.out.println("======删除数据");
                        Tools.showTip(MainAbilitySlice.this,"写入数据成功");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
                case ResourceTable.Id_read_button: {
                    //读出数据
                    try {
                        singleKvStore.getString("test");
                        System.out.println("======读取数据");
                        Tools.showTip(MainAbilitySlice.this,"读取数据成功");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
                case ResourceTable.Id_close_button: {
                    //关闭数据库
                    try {
                        kvManager.closeKvStore(singleKvStore);
                        System.out.println("======关闭数据库");
                        Tools.showTip(MainAbilitySlice.this,"关闭数据库成功");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
                case ResourceTable.Id_delete_button: {
                    //删除数据库
                    try {
                        kvManager.deleteKvStore(stroeId);
                        System.out.println("======删除数据库");
                        Tools.showTip(MainAbilitySlice.this,"删除数据库成功");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
                default:
                    break;
            }
        }

启动第一部


启动第二部




动图演示,在一台设备写入数据,另一台能够读取,删除则无法读取


9e28e27444674d69a72b50ebd4357582.gif

相关文章
|
14天前
|
JavaScript API 数据处理
基于HarmonyOS 5.0 (Next)技术的渐变模糊效果技术实现【代码实战】
本文详细介绍如何在HarmonyOS 5.0(Next)中实现渐变模糊效果,涵盖从基础页面搭建到添加模糊、渐变效果的全过程,并通过代码实战展示具体操作步骤。文章首先介绍了使用`Stack`和`Image`控件设置背景并应用`foregroundBlurStyle`属性实现模糊效果,接着通过`linearGradient`属性融入渐变效果,使界面更加精致美观。此外,还展示了如何利用滑动条和手势等交互元素动态调整模糊与渐变效果,增强用户体验。最后,通过具体代码示例说明如何为图片、弹窗等控件添加渐变模糊效果,突显HarmonyOS的强大功能与灵活性。
70 17
|
15天前
|
数据管理 API 调度
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
144 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
|
15天前
|
开发框架 人工智能 安全
鸿蒙HarmonyOS应用开发 | 「鸿蒙技术分享」HarmonyOS NEXT元服务卡片实战体验
HarmonyOS NEXT的发布对华为及整个行业都产生了深远的影响。它不仅展示了华为的技术实力,还敏锐地把握了市场需求。同时,吸引了更多的开发者和合作伙伴加入鸿蒙生态体系,共同推动鸿蒙生态的繁荣发展。
205 20
鸿蒙HarmonyOS应用开发 | 「鸿蒙技术分享」HarmonyOS NEXT元服务卡片实战体验
|
7天前
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
30 8
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
14天前
|
安全 数据安全/隐私保护 UED
HarmonyOS 5.0 (Next)应用开发实战:使用ArkTS构建开箱即用的登录页面【HarmonyOS 5.0(Next)】
### HarmonyOS 5.0(Next)应用开发实战:使用ArkTS构建开箱即用的登录页面 HarmonyOS 5.0(Next)融合了美学与科技,引入“光感美学”设计理念和多设备深度协同功能。本文通过 ArkTS 构建一个简单的登录页面,展示了模块化导入、状态管理、方法封装、声明式UI构建及事件处理等最佳实践。代码实现了一个包含用户名和密码输入框及登录按钮的界面,支持错误提示和页面跳转。
80 14
HarmonyOS 5.0 (Next)应用开发实战:使用ArkTS构建开箱即用的登录页面【HarmonyOS 5.0(Next)】
|
15天前
|
物联网 调度 vr&ar
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
鸿蒙技术分享:HarmonyOS Next 深度解析 随着万物互联时代的到来,华为发布的 HarmonyOS Next 在技术架构和生态体验上实现了重大升级。本文从技术架构、生态优势和开发实践三方面深入探讨其特点,并通过跨设备笔记应用实战案例,展示其强大的分布式能力和多设备协作功能。核心亮点包括新一代微内核架构、统一开发语言 ArkTS 和多模态交互支持。开发者可借助 DevEco Studio 4.0 快速上手,体验高效、灵活的开发过程。 239个字符
184 13
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
|
14天前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
109 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
10天前
|
Dart 前端开发 IDE
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
本文介绍了如何将现有 Flutter 项目适配鸿蒙系统,详细步骤包括安装 FVM、使用 FVM 安装 Flutter SDK、搭建开发环境、创建项目架构和壳工程等。
74 4
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
|
5天前
|
存储 前端开发 关系型数据库
鸿蒙开发:实现键值数据库存储
对于数据量比较的小的,我们直接选择轻量级的用户首选项方式即可,而对于数据量比较大的情况下,直接可以使用数据库,而对于相对来说,比较大的数据,我们就可以使用键值型数据库方式
|
14天前
|
人工智能 安全 数据安全/隐私保护
HarmonyOS应用开发实战:基于ArkTS的开箱即用登录页面实现【样式方式实现①】【HarmonyOS 5.0(Next)】
本文介绍了基于HarmonyOS 5.0(Next)和ArkTS实现的开箱即用登录页面。HarmonyOS 5.0是华为于2024年10月22日发布的第三代移动操作系统,具备原生智能、互联、安全及流畅特性。文章详细解析了使用ArkTS开发登录页面的代码,涵盖组件定义、界面布局、事件处理、样式设置及异步操作等内容,展示了清晰的组件结构、响应式设计与模块化编程的优势。通过这段代码,开发者可以快速上手并构建高效、美观的应用界面。
125 9