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