HarmonyOS App开发——鸿蒙ArkTS端云一体化云数据库应用和实战

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 创建项目的能力模板选择页,选中带云开发能力的CloudDevEmpty 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 应用搭建稳定的端云一体化数据管理能力,无需关注底层通信和云服务开发,聚焦业务逻辑即可 。

相关推荐
youtootech10 分钟前
HarmonyOS《柚兔学伴》项目实战09-待办列表 UI——List+ForEach+滑动删除
数据结构·ui·华为·list·harmonyos
不羁的木木20 分钟前
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第6篇:图片滤镜效果实现
图像处理·深度学习·harmonyos
拥抱太阳06161 小时前
HarmonyOS 应用开发《掌上英语》第9篇—ArkTS @ObservedV2 + @Trace 响应式编程精讲
华为·harmonyos
拥抱太阳06162 小时前
HarmonyOS 应用开发《掌上英语》第10篇——@Local vs @Param vs @Trace 组件状态管理三剑客
华为·harmonyos
白露与泡影2 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透
数据库·redis·缓存
赵渝强老师3 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据
数据库·oracle
IpdataCloud4 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
wuqingshun3141595 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
空中湖5 小时前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
蓝胖子酱7 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库