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