• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.relationalStore (关系型数据库)(系统接口)
2
3关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Worker线程。
4ArkTS侧支持的基本数据类型:number、string、二进制类型数据、boolean。为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。
5
6该模块提供以下关系型数据库相关的常用功能:
7
8- [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates): 数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
9- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。
10- [ResultSet](js-apis-data-relationalStore.md#resultset):提供用户调用关系型数据库查询接口之后返回的结果集合。
11
12> **说明:**
13>
14> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
15>
16> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.data.relationalStore (关系型数据库)](js-apis-data-relationalStore.md)。
17
18## 导入模块
19
20```ts
21import relationalStore from '@ohos.data.relationalStore';
22```
23
24## StoreConfig
25
26管理关系数据库配置。
27
28| 名称        | 类型          | 必填 | 说明                                                      |
29| ------------- | ------------- | ---- | --------------------------------------------------------- |
30| isSearchable<sup>11+</sup> | boolean | 否 | 指定数据库是否支持搜索,true表示支持搜索,false表示不支持搜索,默认不支持搜索。<br/>**系统接口:** 此接口为系统接口。<br/>从API version 11开始,支持此可选参数。<br/>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core |
31
32## Reference<sup>11+</sup>
33
34记录表之间通过表字段指定的关联关系。其中表a关联到表b,称a为b关联的子表,b为a关联的父表。
35
36**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
37
38**系统接口:** 此接口为系统接口。
39
40| 名称       | 类型   | 必填 | 说明                                     |
41| ---------- | ------ | ---- | ---------------------------------------- |
42| sourceTable | string | 是   | 关联的子表。   |
43| targetTable | string | 是   | 关联的父表。   |
44| refFields   | Record<string, string> | 是   | 表示关联表的关联字段。键值数据中键为子表字段,值为父表字段。       |
45
46## DistributedConfig<sup>10+</sup>
47
48记录表的分布式配置信息。
49
50**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
51
52| 名称     | 类型    | 必填 | 说明                                                         |
53| -------- | ------- | ---- | ------------------------------------------------------------ |
54| references<sup>11+</sup> | Array&lt;[Reference](#reference11)&gt; | 否   | 设置表之间的关联关系,可以设置多个字段的关联,子表和父表关联字段的值必须相同。默认数据库表之间无关联关系。<br/>**系统接口:** 此接口为系统接口。<br/>从API version 11开始,支持此可选参数。|
55
56## RdbStore
57
58提供管理关系型数据库(RDB)的接口。
59在使用以下相关接口前,请使用[executeSql](js-apis-data-relationalStore.md#executesql)接口初始化数据库表结构和相关数据。
60
61### update
62
63update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void
64
65根据DataSharePredicates的指定实例对象更新数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
66
67**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
68
69**模型约束:** 此接口仅可在Stage模型下可用。
70
71**系统接口:** 此接口为系统接口。
72
73**参数:**
74
75| 参数名     | 类型                                                         | 必填 | 说明                                                         |
76| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
77| table      | string                                                       | 是   | 指定的目标表名。                                             |
78| values     | [ValuesBucket](js-apis-data-relationalStore.md#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
79| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |
80| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定的callback回调方法。返回受影响的行数。                   |
81
82**错误码:**
83
84以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
85
86| **错误码ID** | **错误信息**                                 |
87| ------------ | -------------------------------------------- |
88| 14800047     | The WAL file size exceeds the default limit. |
89| 14800000     | Inner error.                                 |
90
91**示例:**
92
93```ts
94import dataSharePredicates from '@ohos.data.dataSharePredicates'
95import { ValuesBucket } from '@ohos.data.ValuesBucket';
96
97let value1 = "Rose";
98let value2 = 22;
99let value3 = 200.5;
100let value4 = new Uint8Array([1, 2, 3, 4, 5]);
101
102// 以下三种方式可用
103const valueBucket1: ValuesBucket = {
104  'NAME': value1,
105  'AGE': value2,
106  'SALARY': value3,
107  'CODES': value4,
108};
109const valueBucket2: ValuesBucket = {
110  NAME: value1,
111  AGE: value2,
112  SALARY: value3,
113  CODES: value4,
114};
115const valueBucket3: ValuesBucket = {
116  "NAME": value1,
117  "AGE": value2,
118  "SALARY": value3,
119  "CODES": value4,
120};
121
122let predicates = new dataSharePredicates.DataSharePredicates();
123predicates.equalTo("NAME", "Lisa");
124if(store != undefined) {
125  (store as relationalStore.RdbStore).update("EMPLOYEE", valueBucket1, predicates, (err, rows) => {
126    if (err) {
127      console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
128      return;
129    }
130    console.info(`Updated row count: ${rows}`);
131  })
132}
133```
134
135### update
136
137update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;
138
139根据DataSharePredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
140
141**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
142
143**模型约束:** 此接口仅可在Stage模型下可用。
144
145**系统接口:** 此接口为系统接口。
146
147**参数:**
148
149| 参数名     | 类型                                                         | 必填 | 说明                                                         |
150| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
151| table      | string                                                       | 是   | 指定的目标表名。                                             |
152| values     | [ValuesBucket](js-apis-data-relationalStore.md#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
153| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |
154
155**返回值**:
156
157| 类型                  | 说明                                      |
158| --------------------- | ----------------------------------------- |
159| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |
160
161**错误码:**
162
163以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
164
165| **错误码ID** | **错误信息**                                 |
166| ------------ | -------------------------------------------- |
167| 14800047     | The WAL file size exceeds the default limit. |
168| 14800000     | Inner error.                                 |
169
170**示例:**
171
172```ts
173import dataSharePredicates from '@ohos.data.dataSharePredicates';
174import { ValuesBucket } from '@ohos.data.ValuesBucket';
175import { BusinessError } from "@ohos.base";
176
177let value1 = "Rose";
178let value2 = 22;
179let value3 = 200.5;
180let value4 = new Uint8Array([1, 2, 3, 4, 5]);
181
182// 以下三种方式可用
183const valueBucket1: ValuesBucket = {
184  'NAME': value1,
185  'AGE': value2,
186  'SALARY': value3,
187  'CODES': value4,
188};
189const valueBucket2: ValuesBucket = {
190  NAME: value1,
191  AGE: value2,
192  SALARY: value3,
193  CODES: value4,
194};
195const valueBucket3: ValuesBucket = {
196  "NAME": value1,
197  "AGE": value2,
198  "SALARY": value3,
199  "CODES": value4,
200};
201
202let predicates = new dataSharePredicates.DataSharePredicates();
203predicates.equalTo("NAME", "Lisa");
204if(store != undefined) {
205  (store as relationalStore.RdbStore).update("EMPLOYEE", valueBucket1, predicates).then(async (rows: Number) => {
206    console.info(`Updated row count: ${rows}`);
207  }).catch((err: BusinessError) => {
208    console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
209  })
210}
211```
212
213### delete
214
215delete(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void
216
217根据DataSharePredicates的指定实例对象从数据库中删除数据,使用callback异步回调。
218
219**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
220
221**模型约束:** 此接口仅可在Stage模型下可用。
222
223**系统接口:** 此接口为系统接口。
224
225**参数:**
226
227| 参数名     | 类型                                                         | 必填 | 说明                                          |
228| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
229| table      | string                                                       | 是   | 指定的目标表名。                              |
230| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |
231| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定callback回调函数。返回受影响的行数。      |
232
233**错误码:**
234
235以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
236
237| **错误码ID** | **错误信息**                                 |
238| ------------ | -------------------------------------------- |
239| 14800047     | The WAL file size exceeds the default limit. |
240| 14800000     | Inner error.                                 |
241
242**示例:**
243
244```ts
245import dataSharePredicates from '@ohos.data.dataSharePredicates';
246
247let predicates = new dataSharePredicates.DataSharePredicates();
248predicates.equalTo("NAME", "Lisa");
249if(store != undefined) {
250  (store as relationalStore.RdbStore).delete("EMPLOYEE", predicates, (err, rows) => {
251    if (err) {
252      console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
253      return;
254    }
255    console.info(`Delete rows: ${rows}`);
256  })
257}
258```
259
260### delete
261
262delete(table: string, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;
263
264根据DataSharePredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。
265
266**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
267
268**模型约束:** 此接口仅可在Stage模型下可用。
269
270**系统接口:** 此接口为系统接口。
271
272**参数:**
273
274| 参数名     | 类型                                                         | 必填 | 说明                                          |
275| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
276| table      | string                                                       | 是   | 指定的目标表名。                              |
277| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |
278
279**返回值**:
280
281| 类型                  | 说明                            |
282| --------------------- | ------------------------------- |
283| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |
284
285**错误码:**
286
287以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
288
289| **错误码ID** | **错误信息**                                 |
290| ------------ | -------------------------------------------- |
291| 14800047     | The WAL file size exceeds the default limit. |
292| 14800000     | Inner error.                                 |
293
294**示例:**
295
296```ts
297import dataSharePredicates from '@ohos.data.dataSharePredicates';
298import { BusinessError } from "@ohos.base";
299
300let predicates = new dataSharePredicates.DataSharePredicates();
301predicates.equalTo("NAME", "Lisa");
302if(store != undefined) {
303  (store as relationalStore.RdbStore).delete("EMPLOYEE", predicates).then((rows: Number) => {
304    console.info(`Delete rows: ${rows}`);
305  }).catch((err: BusinessError) => {
306    console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
307  })
308}
309```
310
311### query<sup>10+</sup>
312
313query(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;ResultSet&gt;):void
314
315根据指定条件查询数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
316
317**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
318
319**模型约束:** 此接口仅可在Stage模型下可用。
320
321**系统接口:** 此接口为系统接口。
322
323**参数:**
324
325| 参数名     | 类型                                                         | 必填 | 说明                                                        |
326| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
327| table      | string                                                       | 是   | 指定的目标表名。                                            |
328| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。               |
329| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
330
331**错误码:**
332
333以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
334
335| **错误码ID** | **错误信息**                 |
336| ------------ | ---------------------------- |
337| 14800000     | Inner error.                 |
338
339**示例:**
340
341```ts
342import dataSharePredicates from '@ohos.data.dataSharePredicates';
343
344let predicates = new dataSharePredicates.DataSharePredicates();
345predicates.equalTo("NAME", "Rose");
346if(store != undefined) {
347  (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, (err, resultSet) => {
348    if (err) {
349      console.error(`Query failed, code is ${err.code},message is ${err.message}`);
350      return;
351    }
352    console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`);
353    // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。
354    while (resultSet.goToNextRow()) {
355      const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
356      const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
357      const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
358      const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
359      console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`);
360    }
361    // 释放数据集的内存
362    resultSet.close();
363  })
364}
365```
366
367### query
368
369query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
370
371根据指定条件查询数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
372
373**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
374
375**模型约束:** 此接口仅可在Stage模型下可用。
376
377**系统接口:** 此接口为系统接口。
378
379**参数:**
380
381| 参数名     | 类型                                                         | 必填 | 说明                                                        |
382| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
383| table      | string                                                       | 是   | 指定的目标表名。                                            |
384| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。               |
385| columns    | Array&lt;string&gt;                                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。            |
386| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
387
388**错误码:**
389
390以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
391
392| **错误码ID** | **错误信息**                 |
393| ------------ | ---------------------------- |
394| 14800000     | Inner error.                 |
395
396**示例:**
397
398```ts
399import dataSharePredicates from '@ohos.data.dataSharePredicates';
400
401let predicates = new dataSharePredicates.DataSharePredicates();
402predicates.equalTo("NAME", "Rose");
403if(store != undefined) {
404  (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], (err, resultSet) => {
405    if (err) {
406      console.error(`Query failed, code is ${err.code},message is ${err.message}`);
407      return;
408    }
409    console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`);
410    // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。
411    while (resultSet.goToNextRow()) {
412      const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
413      const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
414      const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
415      const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
416      console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`);
417    }
418    // 释放数据集的内存
419    resultSet.close();
420  })
421}
422```
423
424### query
425
426query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;
427
428根据指定条件查询数据库中的数据,使用Promise异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
429
430**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
431
432**模型约束:** 此接口仅可在Stage模型下可用。
433
434**系统接口:** 此接口为系统接口。
435
436**参数:**
437
438| 参数名     | 类型                                                         | 必填 | 说明                                             |
439| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------ |
440| table      | string                                                       | 是   | 指定的目标表名。                                 |
441| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。    |
442| columns    | Array&lt;string&gt;                                          | 否   | 表示要查询的列。如果值为空,则查询应用于所有列。 |
443
444**返回值**:
445
446| 类型                                                    | 说明                                               |
447| ------------------------------------------------------- | -------------------------------------------------- |
448| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
449
450**错误码:**
451
452以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
453
454| **错误码ID** | **错误信息**                 |
455| ------------ | ---------------------------- |
456| 14800000     | Inner error.                 |
457
458**示例:**
459
460```ts
461import dataSharePredicates from '@ohos.data.dataSharePredicates';
462import { BusinessError } from "@ohos.base";
463
464let predicates = new dataSharePredicates.DataSharePredicates();
465predicates.equalTo("NAME", "Rose");
466if(store != undefined) {
467  (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet: relationalStore.ResultSet) => {
468    console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`);
469    // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。
470    while (resultSet.goToNextRow()) {
471      const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
472      const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
473      const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
474      const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
475      console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`);
476    }
477    // 释放数据集的内存
478    resultSet.close();
479  }).catch((err: BusinessError) => {
480    console.error(`Query failed, code is ${err.code},message is ${err.message}`);
481  })
482}
483```
484
485### cloudSync<sup>11+</sup>
486
487cloudSync(mode: SyncMode, predicates: RdbPredicates, progress: Callback&lt;ProgressDetails&gt;, callback: AsyncCallback&lt;void&gt;): void
488
489手动执行按条件进行端云同步,使用callback异步回调。使用该接口需要实现云同步功能。
490
491**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
492
493**系统接口:** 此接口为系统接口。
494
495**参数:**
496
497| 参数名         | 类型                             | 必填 | 说明                            |
498|-------------|--------------------------------| ---- |-------------------------------|
499| mode        | [SyncMode](js-apis-data-relationalStore.md#syncmode)          | 是   | 表示数据库的同步模式。                   |
500| predicates  | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates)                  | 是   | 表示同步数据的谓词条件。                  |
501| progress    | Callback&lt;[ProgressDetails](js-apis-data-relationalStore.md#details10)&gt; | 是   | 用来处理数据库同步详细信息的回调函数。           |
502| callback    | AsyncCallback&lt;void&gt;      | 是   | 指定的callback回调函数,用于向调用者发送同步结果。 |
503
504**示例:**
505
506```ts
507let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
508predicates.in("id", ["id1", "id2"]);
509
510if(store != undefined) {
511  (store as relationalStore.RdbStore).cloudSync(relationalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, predicates, (progressDetail: relationalStore.ProgressDetails) => {
512    console.info(`progress: ${progressDetail}`);
513   }, (err) => {
514     if (err) {
515       console.error(`cloudSync failed, code is ${err.code},message is ${err.message}}`);
516       return;
517     }
518     console.info('Cloud sync succeeded');
519  });
520};
521```
522
523### cloudSync<sup>11+</sup>
524
525cloudSync(mode: SyncMode, predicates: RdbPredicates, progress: Callback&lt;ProgressDetails&gt;): Promise&lt;void&gt;
526
527手动执行按条件进行端云同步,使用Promise异步处理。使用该接口需要实现云同步功能。
528
529**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
530
531**系统接口:** 此接口为系统接口。
532
533**参数:**
534
535| 参数名        | 类型                              | 必填 | 说明                  |
536|------------|---------------------------------| ---- |---------------------|
537| mode       | [SyncMode](js-apis-data-relationalStore.md#syncmode)           | 是   | 表示数据库的同步模式。         |
538| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates)                   | 是   | 表示同步数据的谓词条件。                |
539| progress   | Callback&lt;[ProgressDetails](js-apis-data-relationalStore.md#progressdetails10)&gt; | 是   | 用来处理数据库同步详细信息的回调函数。 |
540
541**返回值**:
542
543| 类型                | 说明                                    |
544| ------------------- | --------------------------------------- |
545| Promise&lt;void&gt; | Promise对象,用于向调用者发送同步结果。 |
546
547**示例:**
548
549```ts
550import {BusinessError} from "@ohos.base";
551
552let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
553predicates.in("id", ["id1", "id2"]);
554
555if(store != undefined) {
556  (store as relationalStore.RdbStore).cloudSync(relationalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, predicates, (progressDetail: relationalStore.ProgressDetails) => {
557    console.info(`progress: ${progressDetail}`);
558  }).then(() => {
559    console.info('Cloud sync succeeded');
560  }).catch((err: BusinessError) => {
561    console.error(`cloudSync failed, code is ${err.code},message is ${err.message}}`);
562  });
563};
564```
565
566### querySharingResource<sup>11+</sup>
567
568querySharingResource(predicates: RdbPredicates, columns?: Array&lt;string&gt;): Promise&lt;ResultSet&gt;
569
570根据谓词条件匹配的数据记录查找对应记录的共享资源标识,返回查找的结果集。 如果指定了列字段,则返回结果集中同时包含对应列的字段值,使用Promise异步回调。
571
572**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
573
574**系统接口:** 此接口为系统接口。
575
576**参数:**
577
578| 参数名   | 类型                                                  | 必填 | 说明                                               |
579| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- |
580| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是   | 表示查询的谓词条件。    |
581| columns    | Array&lt;string&gt;      | 否   | 表示要查找的列字段名。此参数不填时,返回的结果集中只包含共享资源标识字段。 |
582
583**返回值:**
584
585| 参数名    | 说明                                               |
586| -------- | ------------------------------------------------- |
587| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象,返回查询的结果集。   |
588
589**错误码:**
590
591以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
592
593| **错误码ID** | **错误信息**                           |
594| ------------ | -------------------------------------- |
595| 14800000     | Inner error.                           |
596
597**示例:**
598
599```ts
600import { BusinessError } from "@ohos.base";
601
602let sharingResource: string;
603let predicates = new relationalStore.RdbPredicates('test_table');
604predicates.equalTo('data', 'data_test');
605if(store != undefined) {
606  (store as relationalStore.RdbStore).querySharingResource(predicates, ['uuid', 'data']).then((resultSet) => {
607    if (!resultSet.goToFirstRow()) {
608      console.error(`resultSet error`);
609      return;
610    }
611    const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD));
612    console.info(`sharing resource: ${res}`);
613    sharingResource = res;
614  }).catch((err: BusinessError) => {
615    console.error(`query sharing resource failed, code is ${err.code},message is ${err.message}`);
616  })
617}
618
619```
620
621### querySharingResource<sup>11+</sup>
622
623querySharingResource(predicates: RdbPredicates, callback: AsyncCallback&lt;ResultSet&gt;): void
624
625根据谓词条件匹配的数据记录查找对应记录的共享资源,返回查找的结果集,使用callback异步回调。
626
627**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
628
629**系统接口:** 此接口为系统接口。
630
631**参数:**
632
633| 参数名   | 类型                                                  | 必填 | 说明                                               |
634| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- |
635| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates)              | 是   | 表示查询的谓词条件。           |
636| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 回调函数。返回查询的结果集。 |
637
638**错误码:**
639
640以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
641
642| **错误码ID** | **错误信息**                           |
643| ------------ | -------------------------------------- |
644| 14800000     | Inner error.                           |
645
646**示例:**
647
648```ts
649let sharingResource: string;
650let predicates = new relationalStore.RdbPredicates('test_table');
651predicates.equalTo('data', 'data_test');
652if(store != undefined) {
653  (store as relationalStore.RdbStore).querySharingResource(predicates,(err, resultSet) => {
654    if (err) {
655      console.error(`sharing resource failed, code is ${err.code},message is ${err.message}`);
656      return;
657    }
658    if (!resultSet.goToFirstRow()) {
659      console.error(`resultSet error`);
660      return;
661    }
662    const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD));
663    console.info(`sharing resource: ${res}`);
664    sharingResource = res;
665  })
666}
667
668```
669
670### querySharingResource<sup>11+</sup>
671
672querySharingResource(predicates: RdbPredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;): void
673
674根据谓词条件匹配的数据记录查找对应记录的共享资源,返回查找到的共享资源的结果集,同时在结果集中返回谓词条件匹配的指定列名的字段值,使用callback异步回调。
675
676**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client
677
678**系统接口:** 此接口为系统接口。
679
680**参数:**
681
682| 参数名   | 类型                                                  | 必填 | 说明                                               |
683| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- |
684| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是   | 表示查询的谓词条件。           |
685| columns    | Array&lt;string&gt;              | 是   | 表示要查找的列字段名。           |
686| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt;  | 是   | 回调函数。返回查询的结果集。 |
687
688**错误码:**
689
690以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。
691
692| **错误码ID** | **错误信息**                           |
693| ------------ | -------------------------------------- |
694| 14800000     | Inner error.                           |
695
696**示例:**
697
698```ts
699let sharingResource: string;
700let predicates = new relationalStore.RdbPredicates('test_table');
701predicates.equalTo('data', 'data_test');
702if(store != undefined) {
703  (store as relationalStore.RdbStore).querySharingResource(predicates, ['uuid', 'data'], (err, resultSet) => {
704    if (err) {
705      console.error(`sharing resource failed, code is ${err.code},message is ${err.message}`);
706      return;
707    }
708    if (!resultSet.goToFirstRow()) {
709      console.error(`resultSet error`);
710      return;
711    }
712    const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD));
713    console.info(`sharing resource: ${res}`);
714    sharingResource = res;
715  })
716}
717
718```