未验证 提交 e7da8db4 编写于 作者: O openharmony_ci 提交者: Gitee

!20474 添加手动同步及相关接口文档

Merge pull request !20474 from renjiecui/master
...@@ -369,6 +369,8 @@ class EntryAbility extends UIAbility { ...@@ -369,6 +369,8 @@ class EntryAbility extends UIAbility {
表示[Asset](#asset10)类型的数组。 表示[Asset](#asset10)类型的数组。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 类型 | 说明 | | 类型 | 说明 |
| ------- | -------------------- | | ------- | -------------------- |
| [Asset](#asset10)[] | 表示Asset类型的数组。 | | [Asset](#asset10)[] | 表示Asset类型的数组。 |
...@@ -399,6 +401,36 @@ class EntryAbility extends UIAbility { ...@@ -399,6 +401,36 @@ class EntryAbility extends UIAbility {
| ------ | ----------------------- | | ------ | ----------------------- |
| string | [ValueType](#valuetype) | | string | [ValueType](#valuetype) |
## PRIKeyType<sup>10+</sup>
用于表示数据库表某一行主键的数据类型。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 类型 | 说明 |
| ---------------- | ---------------------------------- |
| number \| string | 主键的类型可以是number或者string。 |
## UTCTime<sup>10+</sup>
用于表示UTC类型时间的数据类型。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 类型 | 说明 |
| ---- | --------------- |
| Date | UTC类型的时间。 |
## ModifyTime<sup>10+</sup>
用于存储数据库表的主键和修改时间的数据类型。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 类型 | 说明 |
| ------------------------------------------------------- | ------------------------------------------------------------ |
| Map<[PRIKeyType](#prikeytype10), [UTCTime](#utctime10)> | 键表示是数据库表某一行的主键,值表示该行的最后修改时间,用UTC格式表示。 |
## SyncMode ## SyncMode
指数据库同步模式。 指数据库同步模式。
...@@ -407,9 +439,9 @@ class EntryAbility extends UIAbility { ...@@ -407,9 +439,9 @@ class EntryAbility extends UIAbility {
| -------------- | ---- | ---------------------------------- | | -------------- | ---- | ---------------------------------- |
| SYNC_MODE_PUSH | 0 | 表示数据从本地设备推送到远程设备。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | SYNC_MODE_PUSH | 0 | 表示数据从本地设备推送到远程设备。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core |
| SYNC_MODE_PULL | 1 | 表示数据从远程设备拉至本地设备。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | SYNC_MODE_PULL | 1 | 表示数据从远程设备拉至本地设备。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core |
| SYNC_MODE_TIME_FIRST<sup>10+</sup> | - | 表示数据从修改时间较近的一端同步到修改时间较远的一端。请使用枚举名称而非枚举值。暂不支持端云手动同步。 <br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client | | SYNC_MODE_TIME_FIRST<sup>10+</sup> | - | 表示数据从修改时间较近的一端同步到修改时间较远的一端。请使用枚举名称而非枚举值。<br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client |
| SYNC_MODE_NATIVE_FIRST<sup>10+</sup> | - | 表示数据从本地设备同步到云端。请使用枚举名称而非枚举值。暂不支持端云手动同步。 <br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client | | SYNC_MODE_NATIVE_FIRST<sup>10+</sup> | - | 表示数据从本地设备同步到云端。请使用枚举名称而非枚举值。<br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client |
| SYNC_MODE_CLOUD_FIRST<sup>10+</sup> | - | 表示数据从云端同步到本地设备。请使用枚举名称而非枚举值。暂不支持端云手动同步。 <br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client | | SYNC_MODE_CLOUD_FIRST<sup>10+</sup> | - | 表示数据从云端同步到本地设备。请使用枚举名称而非枚举值。<br>**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client |
## SubscribeType ## SubscribeType
...@@ -440,15 +472,15 @@ class EntryAbility extends UIAbility { ...@@ -440,15 +472,15 @@ class EntryAbility extends UIAbility {
记录端云同步过程详情。 记录端云同步过程详情。
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client **系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------- | --- | -------------------------------------------------------------------------------------------------------------------- | | -------- | ---------------------------------- | ---- | ------------------------------------------------------------ |
| table | string | 是 | 表示发生变化的表的名称。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | table | string | 是 | 表示发生变化的表的名称。 |
| type | [ChangeType](#changetype10) | 是 | 表示发生变化的数据的类型,数据或者资产附件发生变化。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | type | [ChangeType](#changetype10) | 是 | 表示发生变化的数据的类型,数据或者资产附件发生变化。 |
| inserted | Array\<string\> \| Array\<number\> | 是 | 记录插入数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示插入数据的行号。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | inserted | Array\<string\> \| Array\<number\> | 是 | 记录插入数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示插入数据的行号。 |
| updated | Array\<string\> \| Array\<number\> | 是 | 记录更新数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示更新数据的行号。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | updated | Array\<string\> \| Array\<number\> | 是 | 记录更新数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示更新数据的行号。 |
| deleted | Array\<string\> \| Array\<number\> | 是 | 记录删除数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示删除数据的行号。<br>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | | deleted | Array\<string\> \| Array\<number\> | 是 | 记录删除数据的位置,如果该表的主键是string类型,该值是主键的值,否则该值表示删除数据的行号。 |
## DistributedType<sup>10+</sup> ## DistributedType<sup>10+</sup>
...@@ -486,6 +518,70 @@ class EntryAbility extends UIAbility { ...@@ -486,6 +518,70 @@ class EntryAbility extends UIAbility {
| ON_CONFLICT_IGNORE | 4 | 表示当冲突发生时,跳过包含违反约束的行并继续处理 SQL 语句的后续行。 | | ON_CONFLICT_IGNORE | 4 | 表示当冲突发生时,跳过包含违反约束的行并继续处理 SQL 语句的后续行。 |
| ON_CONFLICT_REPLACE | 5 | 表示当冲突发生时,在插入或更新当前行之前删除导致约束违例的预先存在的行,并且命令会继续正常执行。 | | ON_CONFLICT_REPLACE | 5 | 表示当冲突发生时,在插入或更新当前行之前删除导致约束违例的预先存在的行,并且命令会继续正常执行。 |
## Progress<sup>10+</sup>
描述端云同步过程的枚举。请使用枚举名称而非枚举值。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 值 | 说明 |
| ---------------- | ---- | ------------------------ |
| SYNC_BEGIN | - | 表示端云同步过程开始。 |
| SYNC_IN_PROGRESS | - | 表示正在端云同步过程中。 |
| SYNC_FINISH | - | 表示端云同步过程已完成。 |
## Statistic<sup>10+</sup>
描述数据库表的端云同步过程的统计信息。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ---------------------------------------- |
| total | number | 是 | 表示数据库表中需要端云同步的总行数。 |
| success | number | 是 | 表示数据库表中端云同步成功的行数。 |
| failed | number | 是 | 表示数据库表中端云同步失败的行数。 |
| remained | number | 是 | 表示数据库表中端云同步剩余未执行的行数。 |
## TableDetails<sup>10+</sup>
描述数据库表执行端云同步任务上传和下载的统计信息。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------------------------ |
| upload | [Statistic](#statistic10) | 是 | 表示数据库表中端云同步上传过程的统计信息。 |
| download | [Statistic](#statistic10) | 是 | 表示数据库表中端云同步下载过程的统计信息。 |
## ProgressCode<sup>10+</sup>
表示端云同步过程的状态。请使用枚举名称而非枚举值。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 值 | 说明 |
| --------------------- | ---- | ------------------------------------------------------------ |
| SUCCESS | - | 表示端云同步过程成功。 |
| UNKNOWN_ERROR | - | 表示端云同步过程遇到未知错误。 |
| NETWORK_ERROR | - | 表示端云同步过程遇到网络错误。 |
| CLOUD_DISABLED | - | 表示云端不可用。 |
| LOCKED_BY_OTHERS | - | 表示有其他设备正在端云同步,本设备无法进行端云同步。<br>请确保无其他设备占用云端资源后,再使用本设备进行端云同步任务。 |
| RECORD_LIMIT_EXCEEDED | - | 表示本次端云同步需要同步的条目或大小超出最大值。由云端配置最大值。 |
| NO_SPACE_FOR_ASSET | - | 表示云空间剩余空间小于待同步的资产大小。 |
## ProgressDetails<sup>10+</sup>
描述数据库整体执行端云同步任务上传和下载的统计信息。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ |
| schedule | [Progress](#progress10) | 是 | 表示端云同步过程。 |
| code | [ProgressCode](#progresscode10) | 是 | 表示端云同步过程的状态。 |
| details | [table: string] : [TableDetails](#tabledetails10) | 是 | 表示端云同步各表的统计信息。<br>键表示表名,值表示该表的端云同步过程统计信息。 |
## RdbPredicates ## RdbPredicates
表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。 表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。
...@@ -2663,6 +2759,85 @@ promise.then(() => { ...@@ -2663,6 +2759,85 @@ promise.then(() => {
}) })
``` ```
### getModifyTime<sup>10+</sup>
getModifyTime(table: string, columnName: string, primaryKeys: PRIKeyType[], callback: AsyncCallback&lt;ModifyTime&gt;): void
获取数据库表中数据的最后修改时间,使用callback异步回调。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
| table | string | 是 | 指定要查询的数据库表的表名。 |
| columnName | string | 是 | 指定要查询的数据库表的列名。 |
| primaryKeys | [PRIKeyType](#prikeytype10)[] | 是 | 指定要查询的行的主键。<br>如果数据库表无主键,参数columnName需传入"rowid",此时primaryKeys为要查询的数据库表的行号。<br>如果数据库表无主键,参数columnName传入不为"rowid",返回对应的错误码。 |
| callback | AsyncCallback&lt;[ModifyTime](#modifytime10)&gt; | 是 | 指定callback回调函数。如果操作成功,则返回ModifyTime对象,表示数据的最后修改时间。 |
**错误码:**
以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)
| **错误码ID** | **错误信息** |
| ------------ | ------------ |
| 14800000 | Inner error. |
**示例:**
```js
let PRIKey = [1, 4, 2, 3];
relationalStore.getModifyTime("cloud_tasks", "uuid", PRIKey, function (err, modifyTime) {
if (err) {
console.error(`getModifyTime failed, code is ${err.code},message is ${err.message}`);
return;
}
let size = modifyTime.size();
});
```
### getModifyTime<sup>10+</sup>
getModifyTime(table: string, columnName: string, primaryKeys: PRIKeyType[]): Promise&lt;ModifyTime&gt;
获取数据库表中数据的最后修改时间,使用Promise异步回调。
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ----------------------------- | ---- | ------------------------------------------------------------ |
| table | string | 是 | 指定要查询的数据库表的表名。 |
| columnName | string | 是 | 指定要查询的数据库表的列名。 |
| primaryKeys | [PRIKeyType](#prikeytype10)[] | 是 | 指定要查询的行的主键。<br>如果数据库表无主键,参数columnName需传入"rowid",此时primaryKeys为要查询的数据库表的行号。<br>如果数据库表无主键,参数columnName传入不为"rowid",返回对应的错误码。 |
**返回值**
| 类型 | 说明 |
| ------------------------------------------ | --------------------------------------------------------- |
| Promise&lt;[ModifyTime](#modifytime10)&gt; | 返回ModifyTime类型的Promise对象,表示数据最后的修改时间。 |
**错误码:**
以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)
| **错误码ID** | **错误信息** |
| ------------ | ------------ |
| 14800000 | Inner error. |
**示例:**
```js
let PRIKey = [1, 2, 3];
relationalStore.getModifyTime("cloud_tasks", "uuid", PRIKey).then((modifyTime) => {
let size = modifyTime.size();
}).catch((err) => {
console.error(`getModifyTime failed, code is ${err.code},message is ${err.message}`);
});
```
### beginTransaction ### beginTransaction
beginTransaction():void beginTransaction():void
...@@ -3314,6 +3489,148 @@ promise.then((result) =>{ ...@@ -3314,6 +3489,148 @@ promise.then((result) =>{
}) })
``` ```
### cloudSync<sup>10+</sup>
cloudSync(mode: SyncMode, progress: Callback&lt;ProgressDetails&gt;, callback: AsyncCallback&lt;void&gt;): void
手动执行对所有分布式表的端云同步,使用callback异步回调。使用该接口需要实现云服务功能。
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- |
| mode | [SyncMode](#syncmode) | 是 | 表示数据库的同步模式。 |
| progress | Callback&lt;[ProgressDetails](#progressdetails10)&gt; | 是 | 用来处理数据库同步详细信息的回调函数。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 指定的callback回调函数,用于向调用者发送同步结果。 |
**示例:**
```js
relationalStore.cloudSync(relatioanalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, function (progressDetails) {
console.info(`Progess: ${progressDetails}`);
}, function (err) {
if (err) {
console.error(`Cloud sync failed, code is ${err.code},message is ${err.message}`);
return;
}
console.info('Cloud sync succeeded');
});
```
### cloudSync<sup>10+</sup>
cloudSync(mode: SyncMode, progress: Callback&lt;ProgressDetails&gt;): Promise&lt;void&gt;
手动执行对所有分布式表的端云同步,使用Promise异步回调。使用该接口需要实现云服务功能。
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------------- | ---- | -------------------------------------- |
| mode | [SyncMode](#syncmode) | 是 | 表示数据库的同步模式。 |
| progress | Callback&lt;[ProgressDetails](#progressdetails10)&gt; | 是 | 用来处理数据库同步详细信息的回调函数。 |
**返回值**
| 类型 | 说明 |
| ------------------- | --------------------------------------- |
| Promise&lt;void&gt; | Promise对象,用于向调用者发送同步结果。 |
**示例:**
```js
function progress(progressDetail) {
console.info(`progress: ${progressDetail}`);
}
relationalStore.cloudSync(relatioanalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, progress).then(() => {
console.info('Cloud sync succeeded');
}).catch((err) => {
console.error(`cloudSync failed, code is ${err.code},message is ${err.message}`);
});
```
### cloudSync<sup>10+</sup>
cloudSync(mode: SyncMode, tables: string[], progress: Callback&lt;ProgressDetails&gt;, callback: AsyncCallback&lt;void&gt;): void
手动执行对指定表的端云同步,使用callback异步回调。使用该接口需要实现云服务功能。
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- |
| mode | [SyncMode](#syncmode) | 是 | 表示数据库的同步模式。 |
| tables | string[] | 是 | 指定同步的表名。 |
| progress | Callback&lt;[ProgressDetails](#progressdetails10)&gt; | 是 | 用来处理数据库同步详细信息的回调函数。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 指定的callback回调函数,用于向调用者发送同步结果。 |
**示例:**
```js
const tables = ["table1", "table2"];
relationalStore.cloudSync(relatioanalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, tables, function (progressDetails) {
console.info(`Progess: ${progressDetails}`);
}, function (err) {
if (err) {
console.error(`Cloud sync failed, code is ${err.code},message is ${err.message}`);
return;
}
console.info('Cloud sync succeeded');
});
```
### cloudSync<sup>10+</sup>
cloudSync(mode: SyncMode, tables: string[], progress: Callback&lt;ProgressDetails&gt;): Promise&lt;void&gt;
手动执行对指定表的端云同步,使用Promise异步回调。使用该接口需要实现云服务功能。
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------------- | ---- | -------------------------------------- |
| mode | [SyncMode](#syncmode) | 是 | 表示数据库的同步模式。 |
| tables | string[] | 是 | 指定同步的表名。 |
| progress | Callback&lt;[ProgressDetails](#progressdetails10)&gt; | 是 | 用来处理数据库同步详细信息的回调函数。 |
**返回值**
| 类型 | 说明 |
| ------------------- | --------------------------------------- |
| Promise&lt;void&gt; | Promise对象,用于向调用者发送同步结果。 |
**示例:**
```js
const tables = ["table1", "table2"];
function progress(progressDetail) {
console.info(`progress: ${progressDetail}`);
}
relationalStore.cloudSync(relatioanalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, tables, progress).then(() => {
console.info('Cloud sync succeeded');
}).catch((err) => {
console.error(`cloudSync failed, code is ${err.code},message is ${err.message}`);
});
```
### on('dataChange') ### on('dataChange')
on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
...@@ -3332,7 +3649,7 @@ on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;stri ...@@ -3332,7 +3649,7 @@ on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;stri
**示例:** **示例:**
``` ```js
function storeObserver(devices) { function storeObserver(devices) {
for (let i = 0; i < devices.length; i++) { for (let i = 0; i < devices.length; i++) {
console.info(`device= ${devices[i]} data changed`); console.info(`device= ${devices[i]} data changed`);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册