• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.rdb (关系型数据库)
2<!--Kit: ArkData-->
3<!--Subsystem: DistributedDataManager-->
4<!--Owner: @baijidong-->
5<!--Designer: @widecode; @htt1997-->
6<!--Tester: @yippo; @logic42-->
7<!--Adviser: @ge-yafang-->
8
9关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Worker线程。
10
11该模块提供以下关系型数据库相关的常用功能:
12
13- [RdbPredicates](#rdbpredicates):数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
14- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。
15
16> **说明:**
17>
18> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
19>
20> - 从API version 9开始,该接口不再维护,推荐使用新接口[@ohos.data.relationalStore](arkts-apis-data-relationalStore.md)。
21
22
23## 导入模块
24
25```ts
26import data_rdb from '@ohos.data.rdb';
27```
28## data_rdb.getRdbStore
29
30getRdbStore(context: Context, config: StoreConfig, version: number, callback: AsyncCallback&lt;RdbStore&gt;): void
31
32获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用callback异步回调。
33
34**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
35
36**参数:**
37
38| 参数名   | 类型                                       | 必填 | 说明                                                         |
39| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
40| context  | Context                                    | 是   | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。 |
41| config   | [StoreConfig](#storeconfig)                | 是   | 与此RDB存储相关的数据库配置。                                |
42| version  | number                                     | 是   | 数据库版本。<br>目前暂不支持通过version自动识别数据库升级降级操作,只能由开发者自行维护。                                                 |
43| callback | AsyncCallback&lt;[RdbStore](#rdbstore)&gt; | 是   | 指定callback回调函数,返回RdbStore对象。                     |
44
45**示例:**
46
47FA模型示例:
48
49```js
50import featureAbility from '@ohos.ability.featureAbility';
51import relationalStore from '@ohos.data.relationalStore';
52import window from '@ohos.window';
53import { BusinessError } from '@ohos.base';
54
55const STORE_CONFIG: data_rdb.StoreConfig = { name: "RdbTest.db"}
56data_rdb.getRdbStore(this.context, STORE_CONFIG, 1, (err, rdbStore) => {
57  if (err) {
58    console.info("Get RdbStore failed, err: " + err)
59    return
60  }
61  console.log("Get RdbStore successfully.")
62})
63```
64
65Stage模型示例:
66
67```ts
68import UIAbility from '@ohos.app.ability.UIAbility';
69import { BusinessError } from "@ohos.base";
70import window from '@ohos.window';
71
72const STORE_CONFIG: data_rdb.StoreConfig = { name: "RdbTest.db"}
73class EntryAbility extends UIAbility {
74  onWindowStageCreate(windowStage: window.WindowStage){
75    data_rdb.getRdbStore(this.context, STORE_CONFIG, 1, (err: BusinessError, rdbStore: data_rdb.RdbStore) => {
76      if (err) {
77        console.info("Get RdbStore failed, err: " + err)
78        return
79      }
80      console.log("Get RdbStore successfully.")
81    })
82  }
83}
84```
85
86## data_rdb.getRdbStore
87
88getRdbStore(context: Context, config: StoreConfig, version: number): Promise&lt;RdbStore&gt;
89
90获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用Promise异步回调。
91
92**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
93
94**参数:**
95
96| 参数名  | 类型                        | 必填 | 说明                                                         |
97| ------- | --------------------------- | ---- | ------------------------------------------------------------ |
98| context | Context                     | 是   | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。 |
99| config  | [StoreConfig](#storeconfig) | 是   | 与此RDB存储相关的数据库配置。                                |
100| version | number                      | 是   | 数据库版本。<br>目前暂不支持通过version自动识别数据库升级降级操作,只能由开发者自行维护。                                                 |
101
102**返回值**:
103
104| 类型                                 | 说明                            |
105| ------------------------------------ | ------------------------------- |
106| Promise&lt;[RdbStore](#rdbstore)&gt; | Promise对象。返回RdbStore对象。 |
107
108**示例:**
109
110FA模型示例:
111
112```js
113import featureAbility from '@ohos.ability.featureAbility';
114
115const STORE_CONFIG: data_rdb.StoreConfig = { name: "RdbTest.db"}
116let promise = data_rdb.getRdbStore(this.context, STORE_CONFIG, 1);
117promise.then(async (rdbStore) => {
118  console.log("Get RdbStore successfully.")
119}).catch((err: BusinessError) => {
120  console.log("Get RdbStore failed, err: " + err)
121})
122```
123
124Stage模型示例:
125
126```ts
127import UIAbility from '@ohos.app.ability.UIAbility';
128import { BusinessError } from "@ohos.base";
129import window from '@ohos.window';
130
131const STORE_CONFIG: data_rdb.StoreConfig = { name: "RdbTest.db"}
132class EntryAbility extends UIAbility {
133  onWindowStageCreate(windowStage: window.WindowStage){
134    context = this.context
135  }
136}
137
138// 获取context后调用getRdbStore
139let promise = data_rdb.getRdbStore(this.context, STORE_CONFIG, 1);
140promise.then(async (rdbStore: data_rdb.RdbStore) => {
141  console.log("Get RdbStore successfully.")
142}).catch((err: BusinessError) => {
143  console.log("Get RdbStore failed, err: " + err)
144})
145```
146
147## data_rdb.deleteRdbStore
148
149deleteRdbStore(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void
150
151删除数据库,使用callback异步回调。
152
153**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
154
155**参数:**
156
157| 参数名   | 类型                      | 必填 | 说明                                                         |
158| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
159| context  | Context                   | 是   | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。 |
160| name     | string                    | 是   | 数据库名称。                                                 |
161| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。                                       |
162
163**示例:**
164
165FA模型示例:
166
167```js
168import featureAbility from '@ohos.ability.featureAbility';
169
170data_rdb.deleteRdbStore(this.context, "RdbTest.db", (err) => {
171  if (err) {
172    console.info("Delete RdbStore failed, err: " + err)
173    return
174  }
175  console.log("Delete RdbStore successfully.")
176})
177```
178
179Stage模型示例:
180
181```ts
182import UIAbility from '@ohos.app.ability.UIAbility';
183import window from '@ohos.window';
184
185class EntryAbility extends UIAbility {
186  onWindowStageCreate(windowStage: window.WindowStage){
187    context = this.context
188  }
189}
190
191// 获取context后调用deleteRdbStore
192data_rdb.deleteRdbStore(this.context, "RdbTest.db", (err) => {
193  if (err) {
194    console.info("Delete RdbStore failed, err: " + err)
195    return
196  }
197  console.log("Delete RdbStore successfully.")
198})
199```
200
201## data_rdb.deleteRdbStore
202
203deleteRdbStore(context: Context, name: string): Promise&lt;void&gt;
204
205使用指定的数据库文件配置删除数据库,使用Promise异步回调。
206
207**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
208
209**参数**
210
211| 参数名  | 类型    | 必填 | 说明                                                         |
212| ------- | ------- | ---- | ------------------------------------------------------------ |
213| context | Context | 是   | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。 |
214| name    | string  | 是   | 数据库名称。                                                 |
215
216**返回值**:
217
218| 类型                | 说明                      |
219| ------------------- | ------------------------- |
220| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
221
222**示例:**
223
224FA模型示例:
225
226```js
227import featureAbility from '@ohos.ability.featureAbility';
228
229let promise = data_rdb.deleteRdbStore(this.context, "RdbTest.db")
230promise.then(() => {
231  console.log("Delete RdbStore successfully.")
232}).catch((err: BusinessError) => {
233  console.info("Delete RdbStore failed, err: " + err)
234})
235```
236
237Stage模型示例:
238
239```ts
240import UIAbility from '@ohos.app.ability.UIAbility';
241import { BusinessError } from "@ohos.base";
242import window from '@ohos.window';
243
244class EntryAbility extends UIAbility {
245  onWindowStageCreate(windowStage: window.WindowStage){
246    context = this.context
247  }
248}
249
250// 获取context后调用deleteRdbStore
251let promise = data_rdb.deleteRdbStore(this.context, "RdbTest.db")
252promise.then(()=>{
253  console.log("Delete RdbStore successfully.")
254}).catch((err: BusinessError) => {
255  console.info("Delete RdbStore failed, err: " + err)
256})
257```
258
259## ValueType
260
261type ValueType = number | string | boolean
262
263用于表示允许的数据字段类型。
264
265**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
266
267| 类型    | 说明                 |
268| ------- | -------------------- |
269| number  | 表示值类型为数字。   |
270| string  | 表示值类型为字符。   |
271| boolean | 表示值类型为布尔值。 |
272
273
274## ValuesBucket
275
276type ValuesBucket = { [key: string]: ValueType | Uint8Array | null }
277
278用于存储键值对的类型。
279
280**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
281
282| 键类型 | 值类型                                                      |
283| ------ | ----------------------------------------------------------- |
284| string | [ValueType](#valuetype)\|&nbsp;Uint8Array&nbsp;\|&nbsp;null |
285
286## SyncMode<sup>8+</sup>
287
288指数据库同步模式。
289
290**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
291
292| 名称           | 值   | 说明                               |
293| -------------- | ---- | ---------------------------------- |
294| SYNC_MODE_PUSH | 0    | 表示数据从本地设备推送到远程设备。 |
295| SYNC_MODE_PULL | 1    | 表示数据从远程设备拉至本地设备。   |
296
297## SubscribeType<sup>8+</sup>
298
299描述订阅类型。
300
301**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
302
303**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
304
305| 名称                  | 值   | 说明               |
306| --------------------- | ---- | ------------------ |
307| SUBSCRIBE_TYPE_REMOTE | 0    | 订阅远程数据更改。 |
308
309## StoreConfig
310
311管理关系数据库配置。
312
313**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
314
315| 名称 | 类型 | 必填 | 说明 |
316| -------- | -------- | -------- | -------- |
317| name | string | 是 | 数据库文件名。 |
318
319## RdbPredicates
320
321表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。
322
323### constructor
324
325constructor(name: string)
326
327构造函数。
328
329**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
330
331**参数:**
332
333| 参数名 | 类型 | 必填 | 说明 |
334| -------- | -------- | -------- | -------- |
335| name | string | 是 | 数据库表名。 |
336
337**示例:**
338
339```ts
340let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
341```
342
343### inDevices<sup>8+</sup>
344
345inDevices(devices: Array&lt;string&gt;): RdbPredicates
346
347同步分布式数据库时连接到组网内指定的远程设备。
348
349> **说明:**
350>
351> 其中devices通过调用<!--RP2-->[deviceManager.getTrustedDeviceListSync](../apis-distributedservice-kit/js-apis-device-manager-sys.md#gettrusteddevicelistsync)方法得到。<!--RP2End-->deviceManager模块的接口均为系统接口,仅系统应用可用。
352
353**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
354
355**参数:**
356
357| 参数名 | 类型 | 必填 | 说明 |
358| -------- | -------- | -------- | -------- |
359| devices | Array&lt;string&gt; | 是 | 指定的组网内的远程设备ID。 |
360
361**返回值**:
362
363| 类型 | 说明 |
364| -------- | -------- |
365| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
366
367**示例:**
368
369```ts
370import deviceManager from '@ohos.distributedHardware.deviceManager';
371
372let dmInstance: deviceManager.DeviceManager;
373let deviceIds: Array<string> = [];
374let devices: Array<string> = [];
375
376deviceManager.createDeviceManager("com.example.appdatamgrverify", (err: BusinessError, manager: void) => {
377  if (err) {
378    console.log("create device manager failed, err=" + err);
379    return;
380  }
381  dmInstance = manager;
382  devices = dmInstance.getTrustedDeviceListSync();
383  for (let i = 0; i < devices.length; i++) {
384    deviceIds[i] = devices[i].deviceId;
385  }
386})
387
388let predicates = new data_rdb.RdbPredicates("EMPLOYEE");
389predicates.inDevices(deviceIds);
390
391let predicates = new data_rdb.RdbPredicates("EMPLOYEE");
392predicates.inDevices(deviceIds);
393```
394
395### inAllDevices<sup>8+</sup>
396
397inAllDevices(): RdbPredicates
398
399同步分布式数据库时连接到组网内所有的远程设备。
400
401**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
402
403**返回值**:
404
405| 类型 | 说明 |
406| -------- | -------- |
407| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
408
409**示例:**
410
411```ts
412let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
413predicates.inAllDevices()
414```
415
416### equalTo
417
418equalTo(field: string, value: ValueType): RdbPredicates
419
420配置谓词以匹配数据字段为ValueType且值等于指定值的字段。
421
422**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
423
424**参数:**
425
426| 参数名 | 类型 | 必填 | 说明 |
427| -------- | -------- | -------- | -------- |
428| field | string | 是 | 数据库表中的列名。 |
429| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
430
431**返回值**:
432
433| 类型 | 说明 |
434| -------- | -------- |
435| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
436
437**示例:**
438
439```ts
440let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
441predicates.equalTo("NAME", "lisi")
442```
443
444
445### notEqualTo
446
447notEqualTo(field: string, value: ValueType): RdbPredicates
448
449配置谓词以匹配数据字段为ValueType且值不等于指定值的字段。
450
451**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
452
453**参数:**
454
455| 参数名 | 类型 | 必填 | 说明 |
456| -------- | -------- | -------- | -------- |
457| field | string | 是 | 数据库表中的列名。 |
458| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
459
460**返回值**:
461
462| 类型 | 说明 |
463| -------- | -------- |
464| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
465
466**示例:**
467
468```ts
469let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
470predicates.notEqualTo("NAME", "lisi")
471```
472
473
474### beginWrap
475
476beginWrap(): RdbPredicates
477
478向谓词添加左括号。
479
480**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
481
482**返回值**:
483
484| 类型 | 说明 |
485| -------- | -------- |
486| [RdbPredicates](#rdbpredicates) | 返回带有左括号的Rdb谓词。 |
487
488**示例:**
489
490```ts
491let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
492predicates.equalTo("NAME", "lisi")
493    .beginWrap()
494    .equalTo("AGE", 18)
495    .or()
496    .equalTo("SALARY", 200.5)
497    .endWrap()
498```
499
500### endWrap
501
502endWrap(): RdbPredicates
503
504向谓词添加右括号。
505
506**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
507
508**返回值**:
509
510| 类型 | 说明 |
511| -------- | -------- |
512| [RdbPredicates](#rdbpredicates) | 返回带有右括号的Rdb谓词。 |
513
514**示例:**
515
516```ts
517let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
518predicates.equalTo("NAME", "lisi")
519    .beginWrap()
520    .equalTo("AGE", 18)
521    .or()
522    .equalTo("SALARY", 200.5)
523    .endWrap()
524```
525
526### or
527
528or(): RdbPredicates
529
530将或条件添加到谓词中。
531
532**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
533
534**返回值**:
535
536| 类型 | 说明 |
537| -------- | -------- |
538| [RdbPredicates](#rdbpredicates) | 返回带有或条件的Rdb谓词。 |
539
540**示例:**
541
542```ts
543let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
544predicates.equalTo("NAME", "Lisa")
545    .or()
546    .equalTo("NAME", "Rose")
547```
548
549### and
550
551and(): RdbPredicates
552
553向谓词添加和条件。
554
555**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
556
557**返回值**:
558
559| 类型 | 说明 |
560| -------- | -------- |
561| [RdbPredicates](#rdbpredicates) | 返回带有和条件的Rdb谓词。 |
562
563**示例:**
564
565```ts
566let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
567predicates.equalTo("NAME", "Lisa")
568    .and()
569    .equalTo("SALARY", 200.5)
570```
571
572### contains
573
574contains(field: string, value: string): RdbPredicates
575
576配置谓词以匹配数据字段为string且value包含指定值的字段。
577
578**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
579
580**参数:**
581
582| 参数名 | 类型 | 必填 | 说明 |
583| -------- | -------- | -------- | -------- |
584| field | string | 是 | 数据库表中的列名。 |
585| value | string | 是 | 指示要与谓词匹配的值。 |
586
587**返回值**:
588
589| 类型 | 说明 |
590| -------- | -------- |
591| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
592
593**示例:**
594
595```ts
596let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
597predicates.contains("NAME", "os")
598```
599
600### beginsWith
601
602beginsWith(field: string, value: string): RdbPredicates
603
604配置谓词以匹配数据字段为string且值以指定字符串开头的字段。
605
606**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
607
608**参数:**
609
610| 参数名 | 类型 | 必填 | 说明 |
611| -------- | -------- | -------- | -------- |
612| field | string | 是 | 数据库表中的列名。 |
613| value | string | 是 | 指示要与谓词匹配的值。 |
614
615**返回值**:
616
617| 类型 | 说明 |
618| -------- | -------- |
619| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
620
621**示例:**
622
623```ts
624let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
625predicates.beginsWith("NAME", "os")
626```
627
628### endsWith
629
630endsWith(field: string, value: string): RdbPredicates
631
632配置谓词以匹配数据字段为string且值以指定字符串结尾的字段。
633
634**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
635
636**参数:**
637
638| 参数名 | 类型 | 必填 | 说明 |
639| -------- | -------- | -------- | -------- |
640| field | string | 是 | 数据库表中的列名。 |
641| value | string | 是 | 指示要与谓词匹配的值。 |
642
643**返回值**:
644
645| 类型 | 说明 |
646| -------- | -------- |
647| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
648
649**示例:**
650
651```ts
652let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
653predicates.endsWith("NAME", "se")
654```
655
656### isNull
657
658isNull(field: string): RdbPredicates
659
660配置谓词以匹配值为null的字段。
661
662**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
663
664**参数:**
665
666| 参数名 | 类型 | 必填 | 说明 |
667| -------- | -------- | -------- | -------- |
668| field | string | 是 | 数据库表中的列名。 |
669
670**返回值**:
671
672| 类型 | 说明 |
673| -------- | -------- |
674| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
675
676**示例**:
677```ts
678let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
679predicates.isNull("NAME")
680```
681
682### isNotNull
683
684isNotNull(field: string): RdbPredicates
685
686配置谓词以匹配值不为null的指定字段。
687
688**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
689
690**参数:**
691
692| 参数名 | 类型 | 必填 | 说明 |
693| -------- | -------- | -------- | -------- |
694| field | string | 是 | 数据库表中的列名。 |
695
696**返回值**:
697
698| 类型 | 说明 |
699| -------- | -------- |
700| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
701
702**错误码:**
703
704以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
705
706| **错误码ID** | **错误信息**                                                                                                       |
707| --------- |----------------------------------------------------------------------------------------------------------------|
708| 401       | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;  2. Incorrect parameter types. |
709
710**示例:**
711
712```ts
713let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
714predicates.isNotNull("NAME")
715```
716
717### like
718
719like(field: string, value: string): RdbPredicates
720
721配置谓词以匹配数据字段为string且值类似于指定字符串的字段。
722
723**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
724
725**参数:**
726
727| 参数名 | 类型 | 必填 | 说明 |
728| -------- | -------- | -------- | -------- |
729| field | string | 是 | 数据库表中的列名。 |
730| value | string | 是 | 指示要与谓词匹配的值。 |
731
732**返回值**:
733
734| 类型 | 说明 |
735| -------- | -------- |
736| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
737
738**示例:**
739
740```ts
741let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
742predicates.like("NAME", "%os%")
743```
744
745### glob
746
747glob(field: string, value: string): RdbPredicates
748
749配置RdbPredicates匹配数据字段为string的指定字段。
750
751**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
752
753**参数:**
754
755| 参数名 | 类型 | 必填 | 说明 |
756| -------- | -------- | -------- | -------- |
757| field | string | 是 | 数据库表中的列名。 |
758| value | string | 是 | 指示要与谓词匹配的值。<br>支持通配符,*表示0个、1个或多个数字或字符,?表示1个数字或字符。 |
759
760**返回值**:
761
762| 类型 | 说明 |
763| -------- | -------- |
764| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
765
766**示例:**
767
768```ts
769let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
770predicates.glob("NAME", "?h*g")
771```
772
773### between
774
775between(field: string, low: ValueType, high: ValueType): RdbPredicates
776
777将谓词配置为匹配数据字段为ValueType且value在给定范围内的指定字段。
778
779**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
780
781**参数:**
782
783| 参数名 | 类型 | 必填 | 说明 |
784| -------- | -------- | -------- | -------- |
785| field | string | 是 | 数据库表中的列名。 |
786| low | [ValueType](#valuetype) | 是 | 指示与谓词匹配的最小值。 |
787| high | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的最大值。 |
788
789**返回值**:
790
791| 类型 | 说明 |
792| -------- | -------- |
793| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
794
795**示例:**
796
797```ts
798let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
799predicates.between("AGE", 10, 50)
800```
801
802### notBetween
803
804notBetween(field: string, low: ValueType, high: ValueType): RdbPredicates
805
806配置RdbPredicates以匹配数据字段为ValueType且value超出给定范围的指定字段。
807
808**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
809
810**参数:**
811
812| 参数名 | 类型 | 必填 | 说明 |
813| -------- | -------- | -------- | -------- |
814| field | string | 是 | 数据库表中的列名。 |
815| low | [ValueType](#valuetype) | 是 | 指示与谓词匹配的最小值。 |
816| high | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的最大值。 |
817
818**返回值**:
819
820| 类型 | 说明 |
821| -------- | -------- |
822| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
823
824**示例:**
825
826```ts
827let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
828predicates.notBetween("AGE", 10, 50)
829```
830
831### greaterThan
832
833greaterThan(field: string, value: ValueType): RdbPredicates
834
835配置谓词以匹配数据字段为ValueType且值大于指定值的字段。
836
837**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
838
839**参数:**
840
841| 参数名 | 类型 | 必填 | 说明 |
842| -------- | -------- | -------- | -------- |
843| field | string | 是 | 数据库表中的列名。 |
844| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
845
846**返回值**:
847
848| 类型 | 说明 |
849| -------- | -------- |
850| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
851
852**示例:**
853
854```ts
855let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
856predicates.greaterThan("AGE", 18)
857```
858
859### lessThan
860
861lessThan(field: string, value: ValueType): RdbPredicates
862
863配置谓词以匹配数据字段为valueType且value小于指定值的字段。
864
865**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
866
867**参数:**
868
869| 参数名 | 类型 | 必填 | 说明 |
870| -------- | -------- | -------- | -------- |
871| field | string | 是 | 数据库表中的列名。 |
872| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
873
874**返回值**:
875
876| 类型 | 说明 |
877| -------- | -------- |
878| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
879
880**示例:**
881
882```ts
883let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
884predicates.lessThan("AGE", 20)
885```
886
887### greaterThanOrEqualTo
888
889greaterThanOrEqualTo(field: string, value: ValueType): RdbPredicates
890
891配置谓词以匹配数据字段为ValueType且value大于或等于指定值的字段。
892
893**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
894
895**参数:**
896
897| 参数名 | 类型 | 必填 | 说明 |
898| -------- | -------- | -------- | -------- |
899| field | string | 是 | 数据库表中的列名。 |
900| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
901
902**返回值**:
903
904| 类型 | 说明 |
905| -------- | -------- |
906| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
907
908**示例:**
909
910```ts
911let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
912predicates.greaterThanOrEqualTo("AGE", 18)
913```
914
915### lessThanOrEqualTo
916
917lessThanOrEqualTo(field: string, value: ValueType): RdbPredicates
918
919配置谓词以匹配数据字段为ValueType且value小于或等于指定值的字段。
920
921**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
922
923**参数:**
924
925| 参数名 | 类型 | 必填 | 说明 |
926| -------- | -------- | -------- | -------- |
927| field | string | 是 | 数据库表中的列名。 |
928| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
929
930**返回值**:
931
932| 类型 | 说明 |
933| -------- | -------- |
934| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
935
936**示例:**
937
938```ts
939let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
940predicates.lessThanOrEqualTo("AGE", 20)
941```
942
943### orderByAsc
944
945orderByAsc(field: string): RdbPredicates
946
947配置谓词以匹配其值按升序排序的列。
948
949**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
950
951**参数:**
952
953| 参数名 | 类型 | 必填 | 说明 |
954| -------- | -------- | -------- | -------- |
955| field | string | 是 | 数据库表中的列名。 |
956
957**返回值**:
958
959| 类型 | 说明 |
960| -------- | -------- |
961| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
962
963**示例:**
964
965```ts
966let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
967predicates.orderByAsc("NAME")
968```
969
970### orderByDesc
971
972orderByDesc(field: string): RdbPredicates
973
974配置谓词以匹配其值按降序排序的列。
975
976**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
977
978**参数:**
979
980| 参数名 | 类型 | 必填 | 说明 |
981| -------- | -------- | -------- | -------- |
982| field | string | 是 | 数据库表中的列名。 |
983
984**返回值**:
985
986| 类型 | 说明 |
987| -------- | -------- |
988| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
989
990**示例:**
991
992```ts
993let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
994predicates.orderByDesc("AGE")
995```
996
997### distinct
998
999distinct(): RdbPredicates
1000
1001配置谓词以过滤重复记录并仅保留其中一个。
1002
1003**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1004
1005**返回值**:
1006
1007| 类型 | 说明 |
1008| -------- | -------- |
1009| [RdbPredicates](#rdbpredicates) | 返回可用于过滤重复记录的谓词。 |
1010
1011**示例:**
1012
1013```ts
1014let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1015predicates.equalTo("NAME", "Rose").distinct()
1016```
1017
1018### limitAs
1019
1020limitAs(value: number): RdbPredicates
1021
1022设置最大数据记录数的谓词。
1023
1024**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1025
1026**参数:**
1027
1028| 参数名 | 类型 | 必填 | 说明 |
1029| -------- | -------- | -------- | -------- |
1030| value | number | 是 | 最大数据记录数。 |
1031
1032**返回值**:
1033
1034| 类型 | 说明 |
1035| -------- | -------- |
1036| [RdbPredicates](#rdbpredicates) | 返回可用于设置最大数据记录数的谓词。 |
1037
1038**示例:**
1039
1040```ts
1041let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1042predicates.equalTo("NAME", "Rose").limitAs(3)
1043```
1044
1045### offsetAs
1046
1047offsetAs(rowOffset: number): RdbPredicates
1048
1049配置RdbPredicates以指定返回结果的起始位置。需要同步调用limitAs接口指定查询数量,否则将无查询结果。如需查询指定偏移位置后的所有行,limitAs接口调用需传参数-1。
1050
1051**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1052
1053**参数:**
1054
1055| 参数名 | 类型 | 必填 | 说明 |
1056| -------- | -------- | -------- | -------- |
1057| rowOffset | number | 是 | 返回结果的起始位置,取值为正整数。 |
1058
1059**返回值**:
1060
1061| 类型 | 说明 |
1062| -------- | -------- |
1063| [RdbPredicates](#rdbpredicates) | 返回具有指定返回结果起始位置的谓词。 |
1064
1065**示例:**
1066
1067```ts
1068let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1069predicates.equalTo("NAME", "Rose").limitAs(-1).offsetAs(3)
1070```
1071
1072### groupBy
1073
1074groupBy(fields: Array&lt;string&gt;): RdbPredicates
1075
1076配置RdbPredicates按指定列分组查询结果。
1077
1078**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1079
1080**参数:**
1081
1082| 参数名 | 类型 | 必填 | 说明 |
1083| -------- | -------- | -------- | -------- |
1084| fields | Array&lt;string&gt; | 是 | 指定分组依赖的列名。 |
1085
1086**返回值**:
1087
1088| 类型 | 说明 |
1089| -------- | -------- |
1090| [RdbPredicates](#rdbpredicates) | 返回分组查询列的谓词。 |
1091
1092**示例:**
1093
1094```ts
1095let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1096predicates.groupBy(["AGE", "NAME"])
1097```
1098
1099### indexedBy
1100
1101indexedBy(field: string): RdbPredicates
1102
1103配置RdbPredicates以指定索引列。
1104
1105**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1106
1107**参数:**
1108
1109| 参数名 | 类型 | 必填 | 说明 |
1110| -------- | -------- | -------- | -------- |
1111| field | string | 是 | 索引列的名称。 |
1112
1113**返回值**:
1114
1115
1116| 类型 | 说明 |
1117| -------- | -------- |
1118| [RdbPredicates](#rdbpredicates) | 返回具有指定索引列的RdbPredicates。 |
1119
1120**示例:**
1121
1122```ts
1123let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1124predicates.indexedBy("SALARY_INDEX")
1125```
1126
1127### in
1128
1129in(field: string, value: Array&lt;ValueType&gt;): RdbPredicates
1130
1131配置RdbPredicates以匹配数据字段为ValueType数组且值在给定范围内的指定字段。
1132
1133**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1134
1135**参数:**
1136
1137| 参数名 | 类型 | 必填 | 说明 |
1138| -------- | -------- | -------- | -------- |
1139| field | string | 是 | 数据库表中的列名。 |
1140| value | Array&lt;[ValueType](#valuetype)&gt; | 是 | 以ValueType型数组形式指定的要匹配的值。 |
1141
1142**返回值**:
1143
1144| 类型 | 说明 |
1145| -------- | -------- |
1146| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1147
1148**示例:**
1149
1150```ts
1151let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1152predicates.in("AGE", [18, 20])
1153```
1154
1155### notIn
1156
1157notIn(field: string, value: Array&lt;ValueType&gt;): RdbPredicates
1158
1159将RdbPredicates配置为匹配数据字段为ValueType且值超出给定范围的指定字段。
1160
1161**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1162
1163**参数:**
1164
1165| 参数名 | 类型 | 必填 | 说明 |
1166| -------- | -------- | -------- | -------- |
1167| field | string | 是 | 数据库表中的列名。 |
1168| value | Array&lt;[ValueType](#valuetype)&gt; | 是 | 以ValueType数组形式指定的要匹配的值。 |
1169
1170**返回值**:
1171
1172| 类型 | 说明 |
1173| -------- | -------- |
1174| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1175
1176**示例:**
1177
1178```ts
1179let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1180predicates.notIn("NAME", ["Lisa", "Rose"])
1181```
1182
1183## RdbStore
1184
1185提供管理关系数据库(RDB)方法的接口。
1186
1187在使用以下相关接口前,请使用[executeSql](#executesql8)接口初始化数据库表结构和相关数据。
1188
1189### insert
1190
1191insert(table: string, values: ValuesBucket, callback: AsyncCallback&lt;number&gt;):void
1192
1193向目标表中插入一行数据,使用callback异步回调。
1194
1195**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1196
1197**参数:**
1198
1199| 参数名 | 类型 | 必填 | 说明 |
1200| -------- | -------- | -------- | -------- |
1201| table | string | 是 | 指定的目标表名。 |
1202| values | [ValuesBucket](#valuesbucket) | 是 | 表示要插入到表中的数据行。 |
1203| callback | AsyncCallback&lt;number&gt; | 是 | 指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 |
1204
1205**示例:**
1206
1207```ts
1208import { ValuesBucket } from '@ohos.data.ValuesBucket';
1209
1210let key1 = "NAME";
1211let key2 = "AGE";
1212let key3 = "SALARY";
1213let key4 = "CODES";
1214let value1 = "Lisi";
1215let value2 = 18;
1216let value3 = 100.5;
1217let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1218const valueBucket: ValuesBucket = {
1219  key1: value1,
1220  key2: value2,
1221  key3: value3,
1222  key4: value4,
1223};
1224
1225rdbStore.insert("EMPLOYEE", valueBucket, (status: number, rowId: number) => {
1226  if (status) {
1227    console.log("Insert is failed");
1228    return;
1229  }
1230  console.log("Insert is successful, rowId = " + rowId);
1231})
1232```
1233
1234### insert
1235
1236insert(table: string, values: ValuesBucket):Promise&lt;number&gt;
1237
1238向目标表中插入一行数据,使用Promise异步回调。
1239
1240**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1241
1242**参数:**
1243
1244| 参数名 | 类型 | 必填 | 说明 |
1245| -------- | -------- | -------- | -------- |
1246| table | string | 是 | 指定的目标表名。 |
1247| values | [ValuesBucket](#valuesbucket) | 是 | 表示要插入到表中的数据行。 |
1248
1249**返回值**:
1250
1251| 类型 | 说明 |
1252| -------- | -------- |
1253| Promise&lt;number&gt; | Promise对象。如果操作成功,返回行ID;否则返回-1。 |
1254
1255**示例:**
1256
1257```ts
1258import { ValuesBucket } from '@ohos.data.ValuesBucket';
1259
1260let key1 = "NAME";
1261let key2 = "AGE";
1262let key3 = "SALARY";
1263let key4 = "CODES";
1264let value1 = "Lisi";
1265let value2 = 18;
1266let value3 = 100.5;
1267let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1268const valueBucket: ValuesBucket = {
1269  key1: value1,
1270  key2: value2,
1271  key3: value3,
1272  key4: value4,
1273};
1274
1275let promise: void = rdbStore.insert("EMPLOYEE", valueBucket)
1276promise.then((rowId: BusinessError) => {
1277  console.log("Insert is successful, rowId = " + rowId);
1278}).catch((status: number) => {
1279  console.log("Insert is failed");
1280})
1281```
1282
1283### batchInsert
1284
1285batchInsert(table: string, values: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;):void
1286
1287向目标表中插入一组数据,使用callback异步回调。
1288
1289**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1290
1291**参数:**
1292
1293| 参数名 | 类型 | 必填 | 说明 |
1294| -------- | -------- | -------- | -------- |
1295| table | string | 是 | 指定的目标表名。 |
1296| values | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是 | 表示要插入到表中的一组数据。 |
1297| callback | AsyncCallback&lt;number&gt; | 是 | 指定callback回调函数。如果操作成功,返回插入的数据个数,否则返回-1。 |
1298
1299**示例:**
1300
1301```ts
1302import { ValuesBucket } from '@ohos.data.ValuesBucket';
1303
1304let key1 = "NAME";
1305let key2 = "AGE";
1306let key3 = "SALARY";
1307let key4 = "CODES";
1308let value1 = "Lisa";
1309let value2 = 18;
1310let value3 = 100.5;
1311let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1312let value5 = "Jack";
1313let value6 = 19;
1314let value7 = 101.5;
1315let value8 = new Uint8Array([6, 7, 8, 9, 10]);
1316let value9 = "Tom";
1317let value10 = 20;
1318let value11 = 102.5;
1319let value12 = new Uint8Array([11, 12, 13, 14, 15]);
1320const valueBucket1: ValuesBucket = {
1321  key1: value1,
1322  key2: value2,
1323  key3: value3,
1324  key4: value4,
1325};
1326const valueBucket2: ValuesBucket = {
1327  key1: value5,
1328  key2: value6,
1329  key3: value7,
1330  key4: value8,
1331};
1332const valueBucket3: ValuesBucket = {
1333  key1: value9,
1334  key2: value10,
1335  key3: value11,
1336  key4: value12,
1337};
1338
1339let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1340rdbStore.batchInsert("EMPLOYEE", valueBuckets, (status: number, insertNum: number) => {
1341  if (status) {
1342    console.log("batchInsert is failed, status = " + status);
1343    return;
1344  }
1345  console.log("batchInsert is successful, the number of values that were inserted = " + insertNum);
1346})
1347```
1348
1349### batchInsert
1350
1351batchInsert(table: string, values: Array&lt;ValuesBucket&gt;):Promise&lt;number&gt;
1352
1353向目标表中插入一组数据,使用Promise异步回调。
1354
1355**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1356
1357**参数:**
1358
1359| 参数名 | 类型 | 必填 | 说明 |
1360| -------- | -------- | -------- | -------- |
1361| table | string | 是 | 指定的目标表名。 |
1362| values | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是 | 表示要插入到表中的一组数据。 |
1363
1364**返回值**:
1365
1366| 类型 | 说明 |
1367| -------- | -------- |
1368| Promise&lt;number&gt; | Promise对象。如果操作成功,返回插入的数据个数,否则返回-1。 |
1369
1370**示例:**
1371
1372```ts
1373import { ValuesBucket } from '@ohos.data.ValuesBucket';
1374
1375let key1 = "NAME";
1376let key2 = "AGE";
1377let key3 = "SALARY";
1378let key4 = "CODES";
1379let value1 = "Lisa";
1380let value2 = 18;
1381let value3 = 100.5;
1382let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1383let value5 = "Jack";
1384let value6 = 19;
1385let value7 = 101.5;
1386let value8 = new Uint8Array([6, 7, 8, 9, 10]);
1387let value9 = "Tom";
1388let value10 = 20;
1389let value11 = 102.5;
1390let value12 = new Uint8Array([11, 12, 13, 14, 15]);
1391const valueBucket1: ValuesBucket = {
1392  key1: value1,
1393  key2: value2,
1394  key3: value3,
1395  key4: value4,
1396};
1397const valueBucket2: ValuesBucket = {
1398  key1: value5,
1399  key2: value6,
1400  key3: value7,
1401  key4: value8,
1402};
1403const valueBucket3: ValuesBucket = {
1404  key1: value9,
1405  key2: value10,
1406  key3: value11,
1407  key4: value12,
1408};
1409
1410let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1411let promise: void = rdbStore.batchInsert("EMPLOYEE", valueBuckets);
1412promise.then((insertNum: number) => {
1413  console.log("batchInsert is successful, the number of values that were inserted = " + insertNum);
1414}).catch((status: number) => {
1415  console.log("batchInsert is failed, status = " + status);
1416})
1417```
1418
1419### update
1420
1421update(values: ValuesBucket, predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void
1422
1423根据RdbPredicates的指定实例对象更新数据库中的数据,使用callback异步回调。
1424
1425**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1426
1427**参数:**
1428
1429| 参数名 | 类型 | 必填 | 说明 |
1430| -------- | -------- | -------- | -------- |
1431| values | [ValuesBucket](#valuesbucket) | 是 | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1432| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的更新条件。 |
1433| callback | AsyncCallback&lt;number&gt; | 是 | 指定的callback回调方法。返回受影响的行数。 |
1434
1435**示例:**
1436
1437```ts
1438import { ValuesBucket } from '@ohos.data.ValuesBucket';
1439
1440let key1 = "NAME";
1441let key2 = "AGE";
1442let key3 = "SALARY";
1443let key4 = "CODES";
1444let value1 = "Lisa";
1445let value2 = 18;
1446let value3 = 100.5;
1447let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1448
1449const valueBucket: ValuesBucket = {
1450  key1: value1,
1451  key2: value2,
1452  key3: value3,
1453  key4: value4,
1454};
1455let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1456predicates.equalTo("NAME", "Lisa")
1457rdbStore.update(valueBucket, predicates, (err: BusinessError, rows: number) => {
1458  if (err) {
1459    console.info("Updated failed, err: " + err)
1460    return
1461  }
1462  console.log("Updated row count: " + rows)
1463})
1464```
1465
1466### update
1467
1468update(values: ValuesBucket, predicates: RdbPredicates):Promise&lt;number&gt;
1469
1470根据RdbPredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。
1471
1472**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1473
1474**参数:**
1475
1476| 参数名 | 类型 | 必填 | 说明 |
1477| -------- | -------- | -------- | -------- |
1478| values | [ValuesBucket](#valuesbucket) | 是 | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1479| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的更新条件。 |
1480
1481**返回值**:
1482
1483| 类型 | 说明 |
1484| -------- | -------- |
1485| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |
1486
1487**示例:**
1488
1489```ts
1490import { ValuesBucket } from '@ohos.data.ValuesBucket';
1491
1492let key1 = "NAME";
1493let key2 = "AGE";
1494let key3 = "SALARY";
1495let key4 = "CODES";
1496let value1 = "Lisa";
1497let value2 = 18;
1498let value3 = 100.5;
1499let value4 = new Uint8Array([1, 2, 3, 4, 5]);
1500
1501const valueBucket: ValuesBucket = {
1502  key1: value1,
1503  key2: value2,
1504  key3: value3,
1505  key4: value4,
1506};
1507let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1508predicates.equalTo("NAME", "Lisa")
1509let promise: void = rdbStore.update(valueBucket, predicates)
1510promise.then(async (rows: number) => {
1511  console.log("Updated row count: " + rows)
1512}).catch((err: BusinessError) => {
1513  console.info("Updated failed, err: " + err)
1514})
1515```
1516
1517### delete
1518
1519delete(predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void
1520
1521根据RdbPredicates的指定实例对象从数据库中删除数据,使用callback异步回调。
1522
1523**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1524
1525**参数:**
1526
1527| 参数名 | 类型 | 必填 | 说明 |
1528| -------- | -------- | -------- | -------- |
1529| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的删除条件。 |
1530| callback | AsyncCallback&lt;number&gt; | 是 | 指定callback回调函数。返回受影响的行数。 |
1531
1532**示例:**
1533
1534```ts
1535let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1536predicates.equalTo("NAME", "Lisa")
1537rdbStore.delete(predicates, (err: BusinessError, rows: number) => {
1538  if (err) {
1539    console.info("Delete failed, err: " + err)
1540    return
1541  }
1542  console.log("Delete rows: " + rows)
1543})
1544```
1545
1546### delete
1547
1548delete(predicates: RdbPredicates):Promise&lt;number&gt;
1549
1550根据RdbPredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。
1551
1552**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1553
1554**参数:**
1555
1556| 参数名 | 类型 | 必填 | 说明 |
1557| -------- | -------- | -------- | -------- |
1558| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的删除条件。 |
1559
1560**返回值**:
1561
1562| 类型 | 说明 |
1563| -------- | -------- |
1564| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |
1565
1566**示例:**
1567
1568```ts
1569let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1570predicates.equalTo("NAME", "Lisa")
1571let promise: void = rdbStore.delete(predicates)
1572promise.then((rows: number) => {
1573  console.log("Delete rows: " + rows)
1574}).catch((err: BusinessError) => {
1575  console.info("Delete failed, err: " + err)
1576})
1577```
1578
1579### query
1580
1581query(predicates: RdbPredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
1582
1583根据指定条件查询数据库中的数据,使用callback异步回调。
1584
1585**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1586
1587**参数:**
1588
1589| 参数名 | 类型 | 必填 | 说明 |
1590| -------- | -------- | -------- | -------- |
1591| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的查询条件。 |
1592| columns | Array&lt;string&gt; | 是 | 表示要查询的列。如果值为空,则查询应用于所有列。 |
1593| callback | AsyncCallback&lt;[ResultSet](js-apis-data-resultset.md)&gt; | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1594
1595**示例:**
1596
1597```ts
1598let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1599predicates.equalTo("NAME", "Rose")
1600rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], (err: BusinessError, resultSet: void) => {
1601  if (err) {
1602    console.info("Query failed, err: " + err)
1603    return
1604  }
1605  console.log("ResultSet column names: " + resultSet.columnNames)
1606  console.log("ResultSet column count: " + resultSet.columnCount)
1607})
1608```
1609
1610### query
1611
1612query(predicates: RdbPredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;
1613
1614根据指定条件查询数据库中的数据,使用Promise异步回调。
1615
1616**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1617
1618**参数:**
1619
1620| 参数名 | 类型 | 必填 | 说明 |
1621| -------- | -------- | -------- | -------- |
1622| predicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的查询条件。 |
1623| columns | Array&lt;string&gt; | 否 | 表示要查询的列。如果值为空,则查询应用于所有列。 |
1624
1625**返回值**:
1626
1627| 类型 | 说明 |
1628| -------- | -------- |
1629| Promise&lt;[ResultSet](js-apis-data-resultset.md)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1630
1631**示例:**
1632
1633```ts
1634let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
1635predicates.equalTo("NAME", "Rose")
1636let promise: void = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
1637promise.then((resultSet: void) => {
1638  console.log("ResultSet column names: " + resultSet.columnNames)
1639  console.log("ResultSet column count: " + resultSet.columnCount)
1640}).catch((err: BusinessError) => {
1641  console.info("Query failed, err: " + err)
1642})
1643```
1644
1645### querySql<sup>8+</sup>
1646
1647querySql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
1648
1649根据指定SQL语句查询数据库中的数据,使用callback异步回调。
1650
1651**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1652
1653**参数:**
1654
1655| 参数名 | 类型 | 必填 | 说明 |
1656| -------- | -------- | -------- | -------- |
1657| sql | string | 是 | 指定要执行的SQL语句。 |
1658| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是 | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数需为空数组。 |
1659| callback | AsyncCallback&lt;[ResultSet](js-apis-data-resultset.md)&gt; | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1660
1661**示例:**
1662
1663```ts
1664rdbStore.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo'], (err: BusinessError, resultSet: void) => {
1665  if (err) {
1666    console.info("Query failed, err: " + err)
1667    return
1668  }
1669  console.log("ResultSet column names: " + resultSet.columnNames)
1670  console.log("ResultSet column count: " + resultSet.columnCount)
1671})
1672```
1673
1674### querySql<sup>8+</sup>
1675
1676querySql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt;
1677
1678根据指定SQL语句查询数据库中的数据,使用Promise异步回调。
1679
1680**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1681
1682**参数:**
1683
1684| 参数名 | 类型 | 必填 | 说明 |
1685| -------- | -------- | -------- | -------- |
1686| sql | string | 是 | 指定要执行的SQL语句。 |
1687| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否 | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数不填。 |
1688
1689**返回值**:
1690
1691| 类型 | 说明 |
1692| -------- | -------- |
1693| Promise&lt;[ResultSet](js-apis-data-resultset.md)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1694
1695**示例:**
1696
1697```ts
1698let promise: void = rdbStore.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = 'sanguo'")
1699promise.then((resultSet: void) => {
1700  console.log("ResultSet column names: " + resultSet.columnNames)
1701  console.log("ResultSet column count: " + resultSet.columnCount)
1702}).catch((err: BusinessError) => {
1703  console.info("Query failed, err: " + err)
1704})
1705```
1706
1707### executeSql<sup>8+</sup>
1708
1709executeSql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;void&gt;):void
1710
1711执行包含指定参数但不返回值的SQL语句,使用callback异步回调。
1712
1713**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1714
1715**参数:**
1716
1717| 参数名 | 类型 | 必填 | 说明 |
1718| -------- | -------- | -------- | -------- |
1719| sql | string | 是 | 指定要执行的SQL语句。 |
1720| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是 | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数需为空数组。 |
1721| callback | AsyncCallback&lt;void&gt; | 是 | 指定callback回调函数。 |
1722
1723**示例:**
1724
1725```ts
1726const SQL_DELETE_TABLE = "DELETE FROM test WHERE name = ?"
1727rdbStore.executeSql(SQL_DELETE_TABLE, ['zhangsan'], (err: BusinessError) => {
1728  if (err) {
1729    console.info("ExecuteSql failed, err: " + err)
1730    return
1731  }
1732  console.info('Delete table done.')
1733})
1734```
1735
1736### executeSql<sup>8+</sup>
1737
1738executeSql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;void&gt;
1739
1740执行包含指定参数但不返回值的SQL语句,使用Promise异步回调。
1741
1742**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1743
1744**参数:**
1745
1746| 参数名 | 类型 | 必填 | 说明 |
1747| -------- | -------- | -------- | -------- |
1748| sql | string | 是 | 指定要执行的SQL语句。 |
1749| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否 | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数不填。 |
1750
1751**返回值**:
1752
1753| 类型 | 说明 |
1754| -------- | -------- |
1755| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
1756
1757**示例:**
1758
1759```ts
1760const SQL_DELETE_TABLE = "DELETE FROM test WHERE name = 'zhangsan'"
1761let promise = rdbStore.executeSql(SQL_DELETE_TABLE)
1762promise.then(() => {
1763  console.info('Delete table done.')
1764}).catch((err: BusinessError) => {
1765  console.info("ExecuteSql failed, err: " + err)
1766})
1767```
1768
1769### beginTransaction<sup>8+</sup>
1770
1771beginTransaction():void
1772
1773在开始执行SQL语句之前,开始事务。
1774
1775**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1776
1777**示例:**
1778
1779```ts
1780import featureAbility from '@ohos.ability.featureAbility';
1781import { ValuesBucket } from '@ohos.data.ValuesBucket';
1782
1783let key1 = "NAME";
1784let key2 = "AGE";
1785let key3 = "SALARY";
1786let key4 = "blobType";
1787let value1 = "Lisa";
1788let value2 = 18;
1789let value3 = 100.5;
1790let value4 = new Uint8Array([1, 2, 3]);
1791
1792const valueBucket: ValuesBucket = {
1793  key1: value1,
1794  key2: value2,
1795  key3: value3,
1796  key4: value4,
1797};
1798
1799data_rdb.getRdbStore(this.context, "RdbTest.db", 1, async (err: BusinessError, rdbStore) => {
1800  rdbStore.beginTransaction()
1801  await rdbStore.insert("test", valueBucket)
1802  rdbStore.commit()
1803})
1804```
1805
1806### commit<sup>8+</sup>
1807
1808commit():void
1809
1810提交已执行的SQL语句。
1811
1812**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1813
1814**示例:**
1815
1816```ts
1817import { ValuesBucket } from '@ohos.data.ValuesBucket';
1818import featureAbility from '@ohos.ability.featureAbility';
1819
1820let key1 = "NAME";
1821let key2 = "AGE";
1822let key3 = "SALARY";
1823let key4 = "blobType";
1824let value1 = "Lisa";
1825let value2 = 18;
1826let value3 = 100.5;
1827let value4 = new Uint8Array([1, 2, 3]);
1828
1829const valueBucket: ValuesBucket = {
1830  key1: value1,
1831  key2: value2,
1832  key3: value3,
1833  key4: value4,
1834};
1835
1836data_rdb.getRdbStore(this.context, "RdbTest.db", 1, async (err: BusinessError, rdbStore) => {
1837  rdbStore.beginTransaction()
1838  await rdbStore.insert("test", valueBucket)
1839  rdbStore.commit()
1840})
1841```
1842
1843### rollBack<sup>8+</sup>
1844
1845rollBack():void
1846
1847回滚已经执行的SQL语句。
1848
1849**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1850
1851**示例:**
1852
1853```ts
1854import { ValuesBucket } from '@ohos.data.ValuesBucket';
1855import featureAbility from '@ohos.ability.featureAbility';
1856
1857let key1 = "NAME";
1858let key2 = "AGE";
1859let key3 = "SALARY";
1860let key4 = "blobType";
1861let value1 = "Lisa";
1862let value2 = 18;
1863let value3 = 100.5;
1864let value4 = new Uint8Array([1, 2, 3]);
1865
1866const valueBucket: ValuesBucket = {
1867  key1: value1,
1868  key2: value2,
1869  key3: value3,
1870  key4: value4,
1871};
1872
1873const STORE_CONFIG = { name: "RdbTest.db"}
1874data_rdb.getRdbStore(this,context, "RdbTest.db", 1, async (err: BusinessError, rdbStore) => {
1875    try {
1876		rdbStore.beginTransaction()
1877		await rdbStore.insert("test", valueBucket)
1878		rdbStore.commit()
1879	} catch (e) {
1880		rdbStore.rollBack()
1881	}
1882})
1883```
1884
1885### setDistributedTables<sup>8+</sup>
1886
1887setDistributedTables(tables: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void
1888
1889设置分布式列表,使用callback异步回调。
1890
1891**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
1892
1893**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1894
1895**参数:**
1896
1897| 参数名 | 类型 | 必填 | 说明 |
1898| -------- | -------- | -------- | -------- |
1899| tables | Array&lt;string&gt; | 是 | 要设置的分布式列表表名。 |
1900| callback | AsyncCallback&lt;void&gt; | 是 | 指定callback回调函数。 |
1901
1902**示例:**
1903
1904```ts
1905rdbStore.setDistributedTables(["EMPLOYEE"], (err: BusinessError) => {
1906  if (err) {
1907    console.info('SetDistributedTables failed, err: ' + err)
1908    return
1909  }
1910  console.info('SetDistributedTables successfully.')
1911})
1912```
1913
1914### setDistributedTables<sup>8+</sup>
1915
1916 setDistributedTables(tables: Array&lt;string&gt;): Promise&lt;void&gt;
1917
1918设置分布式列表,使用Promise异步回调。
1919
1920**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
1921
1922**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1923
1924**参数:**
1925
1926| 参数名 | 类型 | 必填 | 说明 |
1927| -------- | -------- | -------- | -------- |
1928| tables | Array&lt;string&gt; | 是 | 要设置的分布式列表表名。 |
1929
1930**返回值**:
1931
1932| 类型 | 说明 |
1933| -------- | -------- |
1934| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
1935
1936**示例:**
1937
1938```ts
1939let promise: void = rdbStore.setDistributedTables(["EMPLOYEE"])
1940promise.then(() => {
1941  console.info("SetDistributedTables successfully.")
1942}).catch((err: BusinessError) => {
1943  console.info("SetDistributedTables failed, err: " + err)
1944})
1945```
1946
1947### obtainDistributedTableName<sup>8+</sup>
1948
1949obtainDistributedTableName(device: string, table: string, callback: AsyncCallback&lt;string&gt;): void
1950
1951根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名,使用callback异步回调。
1952
1953> **说明:**
1954>
1955> 其中device通过调用<!--RP1-->[deviceManager.getTrustedDeviceListSync](../apis-distributedservice-kit/js-apis-device-manager-sys.md#gettrusteddevicelistsync)方法得到。<!--RP1End-->deviceManager模块的接口均为系统接口,仅系统应用可用。
1956
1957**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
1958
1959**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1960
1961**参数:**
1962
1963| 参数名 | 类型 | 必填 | 说明 |
1964| -------- | -------- | -------- | -------- |
1965| device | string | 是 | 远程设备ID 。 |
1966| table | string | 是 | 远程设备的本地表名。 |
1967| callback | AsyncCallback&lt;string&gt; | 是 | 指定的callback回调函数。如果操作成功,返回远程设备的分布式表名。 |
1968
1969**示例:**
1970
1971```ts
1972import deviceManager from '@ohos.distributedHardware.deviceManager';
1973
1974let dmInstance: Array<string>;
1975
1976deviceManager.createDeviceManager("com.example.appdatamgrverify", (err: BusinessError, manager: void) => {
1977  if (err) {
1978    console.log("create device manager failed, err=" + err);
1979    return;
1980  }
1981  dmInstance = manager;
1982  let devices: Array<string> = dmInstance.getTrustedDeviceListSync();
1983  let deviceId: Array<string> = devices[0].deviceId;
1984})
1985
1986rdbStore.obtainDistributedTableName(deviceId, "EMPLOYEE", (err: BusinessError, tableName: String) {
1987  if (err) {
1988    console.info('ObtainDistributedTableName failed, err: ' + err)
1989    return
1990  }
1991  console.info('ObtainDistributedTableName successfully, tableName=.' + tableName)
1992})
1993```
1994
1995### obtainDistributedTableName<sup>8+</sup>
1996
1997 obtainDistributedTableName(device: string, table: string): Promise&lt;string&gt;
1998
1999根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名,使用Promise异步回调。
2000
2001> **说明:**
2002>
2003> 其中device通过调用<!--RP1-->[deviceManager.getTrustedDeviceListSync](../apis-distributedservice-kit/js-apis-device-manager-sys.md#gettrusteddevicelistsync)方法得到。<!--RP1End-->deviceManager模块的接口均为系统接口,仅系统应用可用。
2004
2005**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2006
2007**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2008
2009**参数:**
2010
2011| 参数名 | 类型 | 必填 | 说明 |
2012| -------- | -------- | -------- | -------- |
2013| device | string | 是 | 远程设备ID。 |
2014| table | string | 是 | 远程设备的本地表名。 |
2015
2016**返回值**:
2017
2018| 类型 | 说明 |
2019| -------- | -------- |
2020| Promise&lt;string&gt; | Promise对象。如果操作成功,返回远程设备的分布式表名。 |
2021
2022**示例:**
2023
2024```ts
2025import deviceManager from '@ohos.distributedHardware.deviceManager';
2026
2027let dmInstance: Array<string>;
2028
2029deviceManager.createDeviceManager("com.example.appdatamgrverify", (err: BusinessError, manager: void) => {
2030  if (err) {
2031    console.log("create device manager failed, err=" + err);
2032    return;
2033  }
2034  dmInstance = manager;
2035  let devices: Array<string> = dmInstance.getTrustedDeviceListSync();
2036  let deviceId: Array<string> = devices[0].deviceId;
2037})
2038
2039let promise: void = rdbStore.obtainDistributedTableName(deviceId, "EMPLOYEE")
2040promise.then((tableName: String) => {
2041  console.info('ObtainDistributedTableName successfully, tableName= ' + tableName)
2042}).catch((err: BusinessError) => {
2043  console.info('ObtainDistributedTableName failed, err: ' + err)
2044})
2045```
2046
2047### sync<sup>8+</sup>
2048
2049sync(mode: SyncMode, predicates: RdbPredicates, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;): void
2050
2051在设备之间同步数据,使用callback异步回调。
2052
2053**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2054
2055**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2056
2057**参数:**
2058
2059| 参数名 | 类型 | 必填 | 说明 |
2060| -------- | -------- | -------- | -------- |
2061| mode | [SyncMode](#syncmode8) | 是 | 指同步模式。该值可以是推、拉。 |
2062| predicates | [RdbPredicates](#rdbpredicates) | 是 | 约束同步数据和设备。 |
2063| callback | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是 | 指定的callback回调函数,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。|
2064
2065**示例:**
2066
2067```ts
2068import deviceManager from '@ohos.distributedHardware.deviceManager';
2069
2070let dmInstance: Array<string>;
2071
2072deviceManager.createDeviceManager("com.example.appdatamgrverify", (err: BusinessError, manager: void) => {
2073  if (err) {
2074    console.log("create device manager failed, err=" + err);
2075    return;
2076  }
2077  dmInstance = manager;
2078  let devices: Array<string> = dmInstance.getTrustedDeviceListSync();
2079  for (let i = 0; i < devices.length; i++) {
2080    let deviceIds: Array<string> = devices[i].deviceId;
2081  }
2082})
2083
2084let predicates = new data_rdb.RdbPredicates('EMPLOYEE')
2085predicates.inDevices(deviceIds)
2086rdbStore.sync(data_rdb.SyncMode.SYNC_MODE_PUSH, predicates, (err: BusinessError, result: void) {
2087  if (err) {
2088    console.log('Sync failed, err: ' + err)
2089    return
2090  }
2091  console.log('Sync done.')
2092  for (let i = 0; i < result.length; i++) {
2093    console.log('device=' + result[i][0] + ' status=' + result[i][1])
2094  }
2095})
2096```
2097
2098### sync<sup>8+</sup>
2099
2100 sync(mode: SyncMode, predicates: RdbPredicates): Promise&lt;Array&lt;[string, number]&gt;&gt;
2101
2102在设备之间同步数据,使用Promise异步回调。
2103
2104**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2105
2106**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2107
2108**参数:**
2109
2110| 参数名 | 类型 | 必填 | 说明 |
2111| -------- | -------- | -------- | -------- |
2112| mode | [SyncMode](#syncmode8) | 是 | 指同步模式。该值可以是推、拉。 |
2113| predicates | [RdbPredicates](#rdbpredicates) | 是 | 约束同步数据和设备。 |
2114
2115**返回值**:
2116
2117| 类型 | 说明 |
2118| -------- | -------- |
2119| Promise&lt;Array&lt;[string, number]&gt;&gt; | Promise对象,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |
2120
2121**示例:**
2122
2123```ts
2124import deviceManager from '@ohos.distributedHardware.deviceManager';
2125
2126let dmInstance: Array<string>;
2127
2128deviceManager.createDeviceManager("com.example.appdatamgrverify", (err: BusinessError, manager: void) => {
2129  if (err) {
2130    console.log("create device manager failed, err=" + err);
2131    return;
2132  }
2133  dmInstance = manager;
2134  let devices: Array<string> = dmInstance.getTrustedDeviceListSync();
2135  for (let i = 0; i < devices.length; i++) {
2136    let deviceIds: Array<string> = devices[i].deviceId;
2137  }
2138})
2139
2140let predicates = new data_rdb.RdbPredicates('EMPLOYEE')
2141predicates.inDevices(deviceIds)
2142let promise: void = rdbStore.sync(data_rdb.SyncMode.SYNC_MODE_PUSH, predicates)
2143promise.then((result: void) =>{
2144  console.log('Sync done.')
2145  for (let i = 0; i < result.length; i++) {
2146    console.log('device=' + result[i][0] + ' status=' + result[i][1])
2147  }
2148}).catch((err: BusinessError) => {
2149  console.log('Sync failed')
2150})
2151```
2152
2153### on('dataChange')<sup>8+</sup>
2154
2155on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
2156
2157注册数据库的观察者。当分布式数据库中的数据发生更改时,将调用回调。
2158
2159**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2160
2161**参数:**
2162
2163| 参数名 | 类型 | 必填 | 说明 |
2164| -------- | -------- | -------- | -------- |
2165| event | string | 是 | 取值为'dataChange',表示数据更改。 |
2166| type | [SubscribeType](#subscribetype8) | 是 | 订阅类型。 |
2167| observer | Callback&lt;Array&lt;string&gt;&gt; | 是 | 指分布式数据库中数据更改事件的观察者。Array&lt;string>为数据库中的数据发生改变的对端设备ID。 |
2168
2169**示例:**
2170
2171```ts
2172let devices: Array<string>;
2173
2174try {
2175  rdbStore.on('dataChange', data_rdb.SubscribeType.SUBSCRIBE_TYPE_REMOTE, (storeObserver: Array<string>) => {
2176    for (let i = 0; i < devices.length; i++) {
2177      console.log('device=' + devices[i] + ' data changed')
2178    }
2179  })
2180} catch (err) {
2181  console.log('Register observer failed')
2182}
2183```
2184
2185### off('dataChange')<sup>8+</sup>
2186
2187off(event:'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
2188
2189从数据库中删除指定类型的指定观察者,使用callback异步回调。
2190
2191**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2192
2193**参数:**
2194
2195| 参数名 | 类型 | 必填 | 说明 |
2196| -------- | -------- | -------- | -------- |
2197| event | string | 是 | 取值为'dataChange',表示数据更改。 |
2198| type | [SubscribeType](#subscribetype8)    | 是 | 订阅类型。 |
2199| observer | Callback&lt;Array&lt;string&gt;&gt; | 是 | 指已注册的数据更改观察者。Array&lt;string>为数据库中的数据发生改变的对端设备ID。 |
2200
2201**示例:**
2202
2203```ts
2204let devices: Array<string>;
2205
2206try {
2207  rdbStore.off('dataChange', data_rdb.SubscribeType.SUBSCRIBE_TYPE_REMOTE, (storeObserver: Array<string>) => {
2208    for (let i = 0; i < devices.length; i++) {
2209      console.log('device=' + devices[i] + ' data changed')
2210    }
2211  })
2212} catch (err) {
2213  console.log('Unregister observer failed')
2214}
2215```
2216