# DistributedContacts **Repository Path**: zqq_ddd/DistributedContacts ## Basic Information - **Project Name**: DistributedContacts - **Description**: fork from OpenHarmony/applications_app_samples - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-18 - **Last Updated**: 2025-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 关系型数据库开发与运用 ## 1.任务介绍 ### 关系数据库简介 关系型数据库(Relational Database,RDB) 是一种基于关系模型来管理数据的数据库。OpenHarmony关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制。 更多详情见 [关系数据库简介](https://gitee.com/openharmony/distributeddatamgr_relational_store#%E7%AE%80%E4%BB%8B) [关系型数据库API简介](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/database/data-sync-of-rdb-store.md) ### 本篇Codelab将实现的内容 您将实现以下内容: 使用关系型数据库接口实现两台手机的自组网分布式通讯录; ### 您将会学到什么 通过关系型数据库实现跨设备通讯录; ## 2.环境准备 ### 2.1 硬件要求 一台高性能PC(建议:内存16G,硬盘500G) 两台华为手机 ### 2.2工具下载 [DevECO Studio](https://developer.huawei.com/consumer/cn/download/) ### 2.3 工具使用 [搭建开发环境指南](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-ide-env-win.md) ### 2.4 代码获取 - 创建工作目录 ``` mkdir -p workspace ``` - 创建跨设备通讯录代码目录 ``` cd workspace mkdir -p contracts ``` - 下载跨设备通讯录源码 ``` cd contracts git clone https://gitee.com/zqq_ddd/DistributedContacts.git ``` ## 3.鸿蒙关系型数据库接口适配 ### 3.1 涉及修改文件 ``` src/main/ets/model/RdbModel.ets ``` ### 3.2 涉及修改内容 开源下载的代码已经实现了设备连接,创建关系型数据库,注册数据变更监听发起同步等,你只需要在此基础上在收到远端数据变更通知后,利用obtainDistributedTableName接口,实现onDataChangeCallback函数 - obtainDistributedTableName接口介绍 obtainDistributedTableName用于根据本地数据库表名获取指定设备上的表名 ``` /** * Obtain distributed table name of specified remote device according to local table name. * When query remote device database, distributed table name is needed. * * @permission ohos.permission.DISTRIBUTED_DATASYNC * @param { string } device - Indicates the remote device. * @param { string } table * @returns { Promise } {string}: the distributed table name. * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; *
2. Incorrect parameter types. * @throws { BusinessError } 801 - Capability not supported. * @throws { BusinessError } 14800000 - Inner error. * @throws { BusinessError } 14800014 - Already closed. * @syscap SystemCapability.DistributedDataManager.RelationalStore.Core * @since 12 */ obtainDistributedTableName(device: string, table: string): Promise; ``` - 使用示例: ``` import data_rdb from '@ohos.data.relationalStore' ... this.distributedTable = await this.rdbStore.obtainDistributedTableName(device, this.tableName) ``` - **实现onDataChangeCallback函数,将对端的数据回写到本端的表中** : 1. 需要将对端的设备表名赋值给this.distributedTable 2. 将this.distributedTable表中的数据写到this.tableName中,该逻辑已有函数实现,只需在onDataChangeCallback中调用该函数即可 - 修改完成后,使用USB连接线连接手机运行,即可将跨设备通讯录安装到手机上 ## 4.恭喜你 ​ 干得漂亮,您已经成功完成了”关系型数据库开发与运用“并学到了: - DevCO Studio开发鸿蒙应用; - 鸿蒙关系型数据库的应用; - 跨设备通讯录;