AGC云数据库创建

打开 AppGallery Connect 的云数据库页面,左侧为 HarmonyOS 应用及云开发菜单,中间介绍云数据库特性,点击 “立即开通” 按钮。

选择“中国”,点击确定。

在云数据库 for Object 页面,点击右侧蓝色 “新增” 按钮,可创建新对象类型,当前暂无数据,页面还支持导入、导出操作。

在新增对象类型页面,输入符合命名规则的对象类型名(如 test_data),点击右下角 “下一步”,进入字段配置环节。

在 AppGallery Connect 云数据库新增对象类型的字段配置页,配置 id(Integer,主键非空)、picName(String)、price(Double)等字段,还可新增字段。

在云数据库新增对象类型的字段配置环节,已添加uId(Integer 类型,设为主键且非空)、name(String 类型)、age(String 类型)字段,可根据实际业务需求点击 “+ 新增字段” 补充更多字段。完成字段定义后,点击右下角 “下一步”,进入索引配置步骤,用于测试数据库结构。

在新增对象类型的索引配置页,创建了名为 PicName 的索引,关联 picName 字段并设置升序(ASC)排序,完成后点击 “下一步” 进入数据权限配置。

在新增对象类型的数据权限页,为所有人、认证用户等角色配置了 query、upsert、delete 全权限,点击 “确定” 完成对象类型创建。

在云数据库 for Object 的对象类型列表页,已创建 PicInfo 对象类型,勾选目标类型后点击蓝色 “导出” 按钮,可导出该对象类型的配置信息。

在云数据库导出弹窗中,选择json 格式(支持界面导入导出),点击 “确定” 按钮,即可导出所选对象类型的配置文件。

在云数据库 for Object 的存储区页面,已有 QuickStartDemo 存储区,可点击右侧蓝色 “新增” 按钮创建新存储区,或对现有存储区执行删除操作。

鸿蒙端侧构建

在 DevEco Studio 创建项目的能力模板选择页,选中带云开发能力的[CloudDev]Empty Ability模板,点击 Next 进入后续创建流程。

在 DevEco Studio 项目配置页,填写项目名、与 AGC 平台一致的包名,设置保存路径与兼容 SDK,开启云开发后点击 Next。

在云开发资源关联页面,先登录验证账号,选择对应团队、包名(com.oylp.cs)及关联的 App 与项目,确认数据处理位置为中国(默认)后,点击右下角 “Finish” 按钮,完成项目与云开发资源的关联。

创建工程的代码如下。

    在EntryAbility文件中,编写代码如下:

import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { cloudCommon } from '@kit.CloudFoundationKit';
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
    cloudCommon.init()
  }

import { cloudDatabase } from '@kit.CloudFoundationKit';

class PicInfo extends cloudDatabase.DatabaseObject {
  public id: number | undefined;
  public picName: string | undefined;
  public price: number | undefined;

  public naturalbase_ClassName(): string {
    return "PicInfo";
  }
}

export { PicInfo };

import { cloudDatabase } from '@kit.CloudFoundationKit';
import { PicInfo } from '../model/PicInfo';

@Entry
@Component
 struct Index {
  @State content: string = '';
  agcDataBase: cloudDatabase.DatabaseZone | undefined = undefined;

  aboutToAppear() {
    this.agcDataBase = cloudDatabase.zone('QuickStartDemo');
  }

  async insert() {

    try {

      let picInfo = new PicInfo();
      picInfo.id = 3;
      picInfo.picName = '普通价格';
      picInfo.price = 100.0;
      let record = await this.agcDataBase?.upsert(picInfo)
      console.info(`Succeeded in upserting a picInfo , result: ` + JSON.stringify(record));
    } catch (err) {
      console.error(`Failed to upsert a picInfo , Code: ${err.code}, message: ${err.message}`);
    }
  }

  build() {

    Column({space:20})
    {
       Button("插入数据",{type:ButtonType.Normal}).onClick(()=>{

           this.insert()

       })


    }.width("100%").height("100%").backgroundColor(0x226688)
  }
}

手动签名发布

在 DevEco Studio 项目结构的签名配置页,填写包名并勾选 HarmonyOS 支持,配置密钥库文件、密码、别名等签名信息,点击 “OK” 完成签名设置。

在云数据库 for Object 的数据页,选择QuickStartDemo存储区与PicInfo对象类型,可查询、新增数据,也能对现有数据执行查看、修改或删除操作。

云数据库增删改查

实现页面效果如图所示。

import { cloudDatabase } from '@kit.CloudFoundationKit';
import { PicInfo } from '../model/PicInfo';

@Entry
@Component
 struct Index {
  @State content: string = '';

  agcDataBase: cloudDatabase.DatabaseZone | undefined = undefined;
  condition: cloudDatabase.DatabaseQuery<cloudDatabase.DatabaseObject> | undefined = undefined;
  aboutToAppear() {
    this.agcDataBase = cloudDatabase.zone('QuickStartDemo');
    this.condition = new cloudDatabase.DatabaseQuery(PicInfo);
  }

  //插入一条数据
  async insert() {

    try {

      let picInfo = new PicInfo();
      picInfo.id = 1;
      picInfo.picName = '中级价格';
      picInfo.price = 200.0;
      let record = await this.agcDataBase?.upsert(picInfo)
      console.info(`Succeeded in upserting a picInfo , result: ` + JSON.stringify(record));
    } catch (err) {
      console.error(`Failed to upsert a picInfo , Code: ${err.code}, message: ${err.message}`);
    }
  }

  //查询所有数据
  async queryAll() {
    try {
      let resultArray = await this.agcDataBase?.query(this.condition)
      console.info(`Succeeded in querying , result: ` + JSON.stringify(resultArray));
    } catch (err) {
      console.error(`Failed to query , Code: ${err.code}, message: ${err.message}`);
    }
  }

  //删除一条数据
  async delete() {
    try {
      let picInfo = new PicInfo();
      picInfo.id = 1;
      let deleteNum = await this.agcDataBase?.delete(picInfo);
      console.info(`Succeeded in deleting , result: ` + JSON.stringify(deleteNum));
    } catch (err) {
      console.error(`Failed to delete , Code: ${err.code}, message: ${err.message}`);
    }
  }

  build() {

    Column({space:20})
    {
       Button("插入数据",{type:ButtonType.Normal}).onClick(()=>{

           this.insert()

       })

      Button("查询所有数据",{type:ButtonType.Normal}).onClick(()=>{

      this.queryAll()

    })

      Button("删除数据",{type:ButtonType.Normal}).onClick(()=>{

        this.delete()

      })


    }.width("100%").height("100%")
  }
}

鸿蒙的端云一体化云数据库(Cloud DB)是为 ArkTS 应用打造的分布式数据管理解决方案,核心是实现 “端侧数据” 与 “云侧数据” 的无缝同步、统一管理,开发者无需关注底层通信和同步逻辑,只需通过统一的 API 操作数据,即可实现 , 通过这套体系,你可以快速为 ArkTS 应用搭建稳定的端云一体化数据管理能力,无需关注底层通信和云服务开发,聚焦业务逻辑即可 。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐