• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.relationalStore (关系型数据库)
2
3关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。
4
5该模块提供以下关系型数据库相关的常用功能:
6
7- [RdbPredicates](#rdbpredicates): 数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
8- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。
9- [ResultSet](#resultset):提供用户调用关系型数据库查询接口之后返回的结果集合。
10
11> **说明:**
12>
13> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14
15## 导入模块
16
17```js
18import relationalStore from '@ohos.data.relationalStore'
19```
20
21## relationalStore.getRdbStore
22
23getRdbStore(context: Context, config: StoreConfig, callback: AsyncCallback<RdbStore>): void
24
25获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用callback异步回调。
26
27**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
28
29**参数:**
30
31| 参数名   | 类型                                           | 必填 | 说明                                                         |
32| -------- | ---------------------------------------------- | ---- | ------------------------------------------------------------ |
33| context  | Context                                        | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
34| config   | [StoreConfig](#storeconfig)               | 是   | 与此RDB存储相关的数据库配置。                                |
35| callback | AsyncCallback&lt;[RdbStore](#rdbstore)&gt; | 是   | 指定callback回调函数,返回RdbStore对象。                   |
36
37**错误码:**
38
39以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
40
41| **错误码ID** | **错误信息**            |
42| ------------ | ----------------------- |
43| 14800010     | If failed delete database by invalid database name.  |
44| 14800011     | If failed open database by database corrupted.     |
45
46**示例:**
47
48FA模型示例:
49
50```js
51
52import featureAbility from '@ohos.ability.featureAbility'
53
54var store;
55
56// 获取context
57let context = featureAbility.getContext();
58
59const STORE_CONFIG = {
60  name: "RdbTest.db",
61  securityLevel: relationalStore.SecurityLevel.S1
62};
63
64relationalStore.getRdbStore(context, STORE_CONFIG, function (err, rdbStore) {
65  store = rdbStore;
66  if (err) {
67    console.error(`Get RdbStore failed, err: ${err}`);
68    return;
69  }
70  console.info(`Get RdbStore successfully.`);
71})
72```
73
74Stage模型示例:
75
76```ts
77import UIAbility from '@ohos.app.ability.UIAbility'
78
79class EntryAbility extends UIAbility {
80  onWindowStageCreate(windowStage) {
81    var store;
82    const STORE_CONFIG = {
83      name: "RdbTest.db",
84      securityLevel: relationalStore.SecurityLevel.S1
85    };
86
87    relationalStore.getRdbStore(this.context, STORE_CONFIG, function (err, rdbStore) {
88      store = rdbStore;
89      if (err) {
90        console.error(`Get RdbStore failed, err: ${err}`);
91        return;
92      }
93      console.info(`Get RdbStore successfully.`);
94    })
95  }
96}
97```
98
99## relationalStore.getRdbStore
100
101getRdbStore(context: Context, config: StoreConfig): Promise&lt;RdbStore&gt;
102
103获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用Promise异步回调。
104
105**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
106
107**参数:**
108
109| 参数名  | 类型                             | 必填 | 说明                                                         |
110| ------- | -------------------------------- | ---- | ------------------------------------------------------------ |
111| context | Context                          | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
112| config  | [StoreConfig](#storeconfig) | 是   | 与此RDB存储相关的数据库配置。                                |
113
114**返回值**:
115
116| 类型                                      | 说明                              |
117| ----------------------------------------- | --------------------------------- |
118| Promise&lt;[RdbStore](#rdbstore)&gt; | Promise对象。返回RdbStore对象。 |
119
120**错误码:**
121
122以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
123
124| **错误码ID** | **错误信息**            |
125| ------------ | ----------------------- |
126| 14800010     | If failed delete database by invalid database name. |
127| 14800011     | If failed open database by database corrupted.     |
128
129**示例:**
130
131FA模型示例:
132
133```js
134import featureAbility from '@ohos.ability.featureAbility'
135
136var store;
137
138// 获取context
139let context = featureAbility.getContext();
140
141const STORE_CONFIG = {
142  name: "RdbTest.db",
143  securityLevel: relationalStore.SecurityLevel.S1
144};
145
146let promise = relationalStore.getRdbStore(context, STORE_CONFIG);
147promise.then(async (rdbStore) => {
148  store = rdbStore;
149  console.info(`Get RdbStore successfully.`);
150}).catch((err) => {
151  console.error(`Get RdbStore failed, err: ${err}`);
152})
153```
154
155Stage模型示例:
156
157```ts
158import UIAbility from '@ohos.app.ability.UIAbility'
159
160class EntryAbility extends UIAbility {
161  onWindowStageCreate(windowStage) {
162    var store;
163    const STORE_CONFIG = {
164      name: "RdbTest.db",
165      securityLevel: relationalStore.SecurityLevel.S1
166    };
167
168    let promise = relationalStore.getRdbStore(this.context, STORE_CONFIG);
169    promise.then(async (rdbStore) => {
170      store = rdbStore;
171      console.info(`Get RdbStore successfully.`)
172    }).catch((err) => {
173      console.error(`Get RdbStore failed, err: ${err}`);
174    })
175  }
176}
177```
178
179## relationalStore.deleteRdbStore
180
181deleteRdbStore(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void
182
183删除数据库,使用callback异步回调。
184
185**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
186
187**参数:**
188
189| 参数名   | 类型                      | 必填 | 说明                                                         |
190| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
191| context  | Context                   | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
192| name     | string                    | 是   | 数据库名称。                                                 |
193| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。                                       |
194
195**错误码:**
196
197以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
198
199| **错误码ID** | **错误信息**            |
200| ------------ | ----------------------- |
201| 14800010     | If failed delete database by invalid database name. |
202
203**示例:**
204
205FA模型示例:
206
207```js
208import featureAbility from '@ohos.ability.featureAbility'
209
210// 获取context
211let context = featureAbility.getContext()
212
213relationalStore.deleteRdbStore(context, "RdbTest.db", function (err) {
214  if (err) {
215    console.error(`Delete RdbStore failed, err: ${err}`);
216    return;
217  }
218  console.info(`Delete RdbStore successfully.`);
219})
220```
221
222Stage模型示例:
223
224```ts
225import UIAbility from '@ohos.app.ability.UIAbility'
226
227class EntryAbility extends UIAbility {
228  onWindowStageCreate(windowStage){
229    relationalStore.deleteRdbStore(this.context, "RdbTest.db", function (err) {
230      if (err) {
231        console.error(`Delete RdbStore failed, err: ${err}`);
232        return;
233      }
234      console.info(`Delete RdbStore successfully.`);
235    })
236  }
237}
238```
239
240## relationalStore.deleteRdbStore
241
242deleteRdbStore(context: Context, name: string): Promise&lt;void&gt;
243
244使用指定的数据库文件配置删除数据库,使用Promise异步回调。
245
246**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
247
248**参数**
249
250| 参数名  | 类型    | 必填 | 说明                                                         |
251| ------- | ------- | ---- | ------------------------------------------------------------ |
252| context | Context | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
253| name    | string  | 是   | 数据库名称。                                                 |
254
255**返回值**:
256
257| 类型                | 说明                      |
258| ------------------- | ------------------------- |
259| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
260
261**错误码:**
262
263以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
264
265| **错误码ID** | **错误信息**            |
266| ------------ | ----------------------- |
267| 14800010     | If failed delete database by invalid database name. |
268
269**示例:**
270
271FA模型示例:
272
273```js
274import featureAbility from '@ohos.ability.featureAbility'
275
276// 获取context
277let context = featureAbility.getContext();
278
279let promise = relationalStore.deleteRdbStore(context, "RdbTest.db");
280promise.then(()=>{
281  console.info(`Delete RdbStore successfully.`);
282}).catch((err) => {
283  console.error(`Delete RdbStore failed, err: ${err}`);
284})
285```
286
287Stage模型示例:
288
289```ts
290import UIAbility from '@ohos.app.ability.UIAbility'
291
292class EntryAbility extends UIAbility {
293  onWindowStageCreate(windowStage){
294    let promise = relationalStore.deleteRdbStore(this.context, "RdbTest.db");
295    promise.then(()=>{
296      console.info(`Delete RdbStore successfully.`);
297    }).catch((err) => {
298      console.error(`Delete RdbStore failed, err: ${err}`);
299    })
300  }
301}
302```
303
304## StoreConfig
305
306管理关系数据库配置。
307
308**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
309
310| 名称        | 类型          | 必填 | 说明                                                      |
311| ------------- | ------------- | ---- | --------------------------------------------------------- |
312| name          | string        | 是   | 数据库文件名。                                            |
313| securityLevel | [SecurityLevel](#securitylevel) | 是   | 设置数据库安全级别                                        |
314| encrypt       | boolean       | 否   | 指定数据库是否加密。<br/> true:加密。<br/> false:非加密。 |
315
316## SecurityLevel
317
318数据库的安全级别枚举。
319
320**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
321
322| 名称 | 值   | 说明                                                         |
323| ---- | ---- | ------------------------------------------------------------ |
324| S1   | 1    | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 |
325| S2   | 2    | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 |
326| S3   | 3    | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 |
327| S4   | 4    | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 |
328
329## ValueType
330
331用于表示允许的数据字段类型。
332
333**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
334
335| 类型    | 说明                 |
336| ------- | -------------------- |
337| number  | 表示值类型为数字。   |
338| string  | 表示值类型为字符。   |
339| boolean | 表示值类型为布尔值。 |
340
341## ValuesBucket
342
343用于存储键值对的类型。
344
345**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
346
347| 键类型 | 值类型                                                      |
348| ------ | ----------------------------------------------------------- |
349| string | [ValueType](#valuetype)\|&nbsp;Uint8Array&nbsp;\|&nbsp;null |
350
351## SyncMode
352
353指数据库同步模式。
354
355**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
356
357| 名称           | 值   | 说明                               |
358| -------------- | ---- | ---------------------------------- |
359| SYNC_MODE_PUSH | 0    | 表示数据从本地设备推送到远程设备。 |
360| SYNC_MODE_PULL | 1    | 表示数据从远程设备拉至本地设备。   |
361
362## SubscribeType
363
364描述订阅类型。
365
366**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
367
368**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
369
370| 名称                  | 值   | 说明               |
371| --------------------- | ---- | ------------------ |
372| SUBSCRIBE_TYPE_REMOTE | 0    | 订阅远程数据更改。 |
373
374## RdbPredicates
375
376表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。
377
378### constructor
379
380constructor(name: string)
381
382构造函数。
383
384**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
385
386**参数:**
387
388| 参数名 | 类型   | 必填 | 说明         |
389| ------ | ------ | ---- | ------------ |
390| name   | string | 是   | 数据库表名。 |
391
392**示例:**
393
394```js
395let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
396```
397
398### inDevices
399
400inDevices(devices: Array&lt;string&gt;): RdbPredicates
401
402同步分布式数据库时连接到组网内指定的远程设备。
403
404> **说明:**
405>
406> 其中devices通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
407
408**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
409
410**参数:**
411
412| 参数名  | 类型                | 必填 | 说明                       |
413| ------- | ------------------- | ---- | -------------------------- |
414| devices | Array&lt;string&gt; | 是   | 指定的组网内的远程设备ID。 |
415
416**返回值**:
417
418| 类型                                 | 说明                       |
419| ------------------------------------ | -------------------------- |
420| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
421
422**示例:**
423
424```js
425import deviceManager from '@ohos.distributedHardware.deviceManager';
426let dmInstance = null;
427
428deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
429    if (err) {
430        console.log("create device manager failed, err=" + err);
431        return;
432    }
433    dmInstance = manager;
434    let devices = dmInstance.getTrustedDeviceListSync();
435    let deviceIds = [];
436    for (var i = 0; i < devices.length; i++) {
437        deviceIds[i] = devices[i].deviceId;
438    }
439})
440
441let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
442predicates.inDevices(deviceIds);
443```
444
445### inAllDevices
446
447inAllDevices(): RdbPredicates
448
449
450同步分布式数据库时连接到组网内所有的远程设备。
451
452**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
453
454**返回值**:
455
456| 类型                                 | 说明                       |
457| ------------------------------------ | -------------------------- |
458| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
459
460**示例:**
461
462```js
463let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
464predicates.inAllDevices();
465```
466
467### equalTo
468
469equalTo(field: string, value: ValueType): RdbPredicates
470
471
472配置谓词以匹配数据字段为ValueType且值等于指定值的字段。
473
474**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
475
476**参数:**
477
478| 参数名 | 类型                    | 必填 | 说明                   |
479| ------ | ----------------------- | ---- | ---------------------- |
480| field  | string                  | 是   | 数据库表中的列名。     |
481| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
482
483**返回值**:
484
485| 类型                                 | 说明                       |
486| ------------------------------------ | -------------------------- |
487| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
488
489**示例:**
490
491```js
492let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
493predicates.equalTo("NAME", "lisi");
494```
495
496
497### notEqualTo
498
499notEqualTo(field: string, value: ValueType): RdbPredicates
500
501
502配置谓词以匹配数据字段为ValueType且值不等于指定值的字段。
503
504**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
505
506**参数:**
507
508| 参数名 | 类型                    | 必填 | 说明                   |
509| ------ | ----------------------- | ---- | ---------------------- |
510| field  | string                  | 是   | 数据库表中的列名。     |
511| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
512
513**返回值**:
514
515| 类型                                 | 说明                       |
516| ------------------------------------ | -------------------------- |
517| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
518
519**示例:**
520
521```js
522let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
523predicates.notEqualTo("NAME", "lisi");
524```
525
526
527### beginWrap
528
529beginWrap(): RdbPredicates
530
531
532向谓词添加左括号。
533
534**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
535
536**返回值**:
537
538| 类型                                 | 说明                      |
539| ------------------------------------ | ------------------------- |
540| [RdbPredicates](#rdbpredicates) | 返回带有左括号的Rdb谓词。 |
541
542**示例:**
543
544```js
545let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
546predicates.equalTo("NAME", "lisi")
547    .beginWrap()
548    .equalTo("AGE", 18)
549    .or()
550    .equalTo("SALARY", 200.5)
551    .endWrap()
552```
553
554### endWrap
555
556endWrap(): RdbPredicates
557
558向谓词添加右括号。
559
560**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
561
562**返回值**:
563
564| 类型                                 | 说明                      |
565| ------------------------------------ | ------------------------- |
566| [RdbPredicates](#rdbpredicates) | 返回带有右括号的Rdb谓词。 |
567
568**示例:**
569
570```js
571let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
572predicates.equalTo("NAME", "lisi")
573    .beginWrap()
574    .equalTo("AGE", 18)
575    .or()
576    .equalTo("SALARY", 200.5)
577    .endWrap()
578```
579
580### or
581
582or(): RdbPredicates
583
584将或条件添加到谓词中。
585
586**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
587
588**返回值**:
589
590| 类型                                 | 说明                      |
591| ------------------------------------ | ------------------------- |
592| [RdbPredicates](#rdbpredicates) | 返回带有或条件的Rdb谓词。 |
593
594**示例:**
595
596```js
597let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
598predicates.equalTo("NAME", "Lisa")
599    .or()
600    .equalTo("NAME", "Rose")
601```
602
603### and
604
605and(): RdbPredicates
606
607向谓词添加和条件。
608
609**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
610
611**返回值**:
612
613| 类型                                 | 说明                      |
614| ------------------------------------ | ------------------------- |
615| [RdbPredicates](#rdbpredicates) | 返回带有和条件的Rdb谓词。 |
616
617**示例:**
618
619```js
620let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
621predicates.equalTo("NAME", "Lisa")
622    .and()
623    .equalTo("SALARY", 200.5)
624```
625
626### contains
627
628contains(field: string, value: string): RdbPredicates
629
630配置谓词以匹配数据字段为string且value包含指定值的字段。
631
632**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
633
634**参数:**
635
636| 参数名 | 类型   | 必填 | 说明                   |
637| ------ | ------ | ---- | ---------------------- |
638| field  | string | 是   | 数据库表中的列名。     |
639| value  | string | 是   | 指示要与谓词匹配的值。 |
640
641**返回值**:
642
643| 类型                                 | 说明                       |
644| ------------------------------------ | -------------------------- |
645| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
646
647**示例:**
648
649```js
650let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
651predicates.contains("NAME", "os");
652```
653
654### beginsWith
655
656beginsWith(field: string, value: string): RdbPredicates
657
658配置谓词以匹配数据字段为string且值以指定字符串开头的字段。
659
660**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
661
662**参数:**
663
664| 参数名 | 类型   | 必填 | 说明                   |
665| ------ | ------ | ---- | ---------------------- |
666| field  | string | 是   | 数据库表中的列名。     |
667| value  | string | 是   | 指示要与谓词匹配的值。 |
668
669**返回值**:
670
671| 类型                                 | 说明                       |
672| ------------------------------------ | -------------------------- |
673| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
674
675**示例:**
676
677```js
678let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
679predicates.beginsWith("NAME", "os");
680```
681
682### endsWith
683
684endsWith(field: string, value: string): RdbPredicates
685
686配置谓词以匹配数据字段为string且值以指定字符串结尾的字段。
687
688**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
689
690**参数:**
691
692| 参数名 | 类型   | 必填 | 说明                   |
693| ------ | ------ | ---- | ---------------------- |
694| field  | string | 是   | 数据库表中的列名。     |
695| value  | string | 是   | 指示要与谓词匹配的值。 |
696
697**返回值**:
698
699| 类型                                 | 说明                       |
700| ------------------------------------ | -------------------------- |
701| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
702
703**示例:**
704
705```js
706let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
707predicates.endsWith("NAME", "se");
708```
709
710### isNull
711
712isNull(field: string): RdbPredicates
713
714配置谓词以匹配值为null的字段。
715
716**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
717
718**参数:**
719
720| 参数名 | 类型   | 必填 | 说明               |
721| ------ | ------ | ---- | ------------------ |
722| field  | string | 是   | 数据库表中的列名。 |
723
724**返回值**:
725
726| 类型                                 | 说明                       |
727| ------------------------------------ | -------------------------- |
728| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
729
730**示例**:
731
732```js
733let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
734predicates.isNull("NAME");
735```
736
737### isNotNull
738
739isNotNull(field: string): RdbPredicates
740
741配置谓词以匹配值不为null的指定字段。
742
743**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
744
745**参数:**
746
747| 参数名 | 类型   | 必填 | 说明               |
748| ------ | ------ | ---- | ------------------ |
749| field  | string | 是   | 数据库表中的列名。 |
750
751**返回值**:
752
753| 类型                                 | 说明                       |
754| ------------------------------------ | -------------------------- |
755| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
756
757**示例:**
758
759```js
760let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
761predicates.isNotNull("NAME");
762```
763
764### like
765
766like(field: string, value: string): RdbPredicates
767
768配置谓词以匹配数据字段为string且值类似于指定字符串的字段。
769
770**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
771
772**参数:**
773
774| 参数名 | 类型   | 必填 | 说明                   |
775| ------ | ------ | ---- | ---------------------- |
776| field  | string | 是   | 数据库表中的列名。     |
777| value  | string | 是   | 指示要与谓词匹配的值。 |
778
779**返回值**:
780
781| 类型                                 | 说明                       |
782| ------------------------------------ | -------------------------- |
783| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
784
785**示例:**
786
787```js
788let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
789predicates.like("NAME", "%os%");
790```
791
792### glob
793
794glob(field: string, value: string): RdbPredicates
795
796配置RdbPredicates匹配数据字段为string的指定字段。
797
798**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
799
800**参数:**
801
802| 参数名 | 类型   | 必填 | 说明                                                         |
803| ------ | ------ | ---- | ------------------------------------------------------------ |
804| field  | string | 是   | 数据库表中的列名。                                           |
805| value  | string | 是   | 指示要与谓词匹配的值。<br>支持通配符,*表示0个、1个或多个数字或字符,?表示1个数字或字符。 |
806
807**返回值**:
808
809| 类型                                 | 说明                       |
810| ------------------------------------ | -------------------------- |
811| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
812
813**示例:**
814
815```js
816let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
817predicates.glob("NAME", "?h*g");
818```
819
820### between
821
822between(field: string, low: ValueType, high: ValueType): RdbPredicates
823
824将谓词配置为匹配数据字段为ValueType且value在给定范围内的指定字段。
825
826**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
827
828**参数:**
829
830| 参数名 | 类型                    | 必填 | 说明                       |
831| ------ | ----------------------- | ---- | -------------------------- |
832| field  | string                  | 是   | 数据库表中的列名。         |
833| low    | [ValueType](#valuetype) | 是   | 指示与谓词匹配的最小值。   |
834| high   | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的最大值。 |
835
836**返回值**:
837
838| 类型                                 | 说明                       |
839| ------------------------------------ | -------------------------- |
840| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
841
842**示例:**
843
844```js
845let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
846predicates.between("AGE", 10, 50);
847```
848
849### notBetween
850
851notBetween(field: string, low: ValueType, high: ValueType): RdbPredicates
852
853配置RdbPredicates以匹配数据字段为ValueType且value超出给定范围的指定字段。
854
855**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
856
857**参数:**
858
859| 参数名 | 类型                    | 必填 | 说明                       |
860| ------ | ----------------------- | ---- | -------------------------- |
861| field  | string                  | 是   | 数据库表中的列名。         |
862| low    | [ValueType](#valuetype) | 是   | 指示与谓词匹配的最小值。   |
863| high   | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的最大值。 |
864
865**返回值**:
866
867| 类型                                 | 说明                       |
868| ------------------------------------ | -------------------------- |
869| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
870
871**示例:**
872
873```js
874let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
875predicates.notBetween("AGE", 10, 50);
876```
877
878### greaterThan
879
880greaterThan(field: string, value: ValueType): RdbPredicates
881
882配置谓词以匹配数据字段为ValueType且值大于指定值的字段。
883
884**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
885
886**参数:**
887
888| 参数名 | 类型                    | 必填 | 说明                   |
889| ------ | ----------------------- | ---- | ---------------------- |
890| field  | string                  | 是   | 数据库表中的列名。     |
891| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
892
893**返回值**:
894
895| 类型                                 | 说明                       |
896| ------------------------------------ | -------------------------- |
897| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
898
899**示例:**
900
901```js
902let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
903predicates.greaterThan("AGE", 18);
904```
905
906### lessThan
907
908lessThan(field: string, value: ValueType): RdbPredicates
909
910配置谓词以匹配数据字段为valueType且value小于指定值的字段。
911
912**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
913
914**参数:**
915
916| 参数名 | 类型                    | 必填 | 说明                   |
917| ------ | ----------------------- | ---- | ---------------------- |
918| field  | string                  | 是   | 数据库表中的列名。     |
919| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
920
921**返回值**:
922
923| 类型                                 | 说明                       |
924| ------------------------------------ | -------------------------- |
925| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
926
927**示例:**
928
929```js
930let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
931predicates.lessThan("AGE", 20);
932```
933
934### greaterThanOrEqualTo
935
936greaterThanOrEqualTo(field: string, value: ValueType): RdbPredicates
937
938配置谓词以匹配数据字段为ValueType且value大于或等于指定值的字段。
939
940**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
941
942**参数:**
943
944| 参数名 | 类型                    | 必填 | 说明                   |
945| ------ | ----------------------- | ---- | ---------------------- |
946| field  | string                  | 是   | 数据库表中的列名。     |
947| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
948
949**返回值**:
950
951| 类型                                 | 说明                       |
952| ------------------------------------ | -------------------------- |
953| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
954
955**示例:**
956
957```js
958let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
959predicates.greaterThanOrEqualTo("AGE", 18);
960```
961
962### lessThanOrEqualTo
963
964lessThanOrEqualTo(field: string, value: ValueType): RdbPredicates
965
966配置谓词以匹配数据字段为ValueType且value小于或等于指定值的字段。
967
968**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
969
970**参数:**
971
972| 参数名 | 类型                    | 必填 | 说明                   |
973| ------ | ----------------------- | ---- | ---------------------- |
974| field  | string                  | 是   | 数据库表中的列名。     |
975| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |
976
977**返回值**:
978
979| 类型                                 | 说明                       |
980| ------------------------------------ | -------------------------- |
981| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
982
983**示例:**
984
985```js
986let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
987predicates.lessThanOrEqualTo("AGE", 20);
988```
989
990### orderByAsc
991
992orderByAsc(field: string): RdbPredicates
993
994配置谓词以匹配其值按升序排序的列。
995
996**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
997
998**参数:**
999
1000| 参数名 | 类型   | 必填 | 说明               |
1001| ------ | ------ | ---- | ------------------ |
1002| field  | string | 是   | 数据库表中的列名。 |
1003
1004**返回值**:
1005
1006| 类型                                 | 说明                       |
1007| ------------------------------------ | -------------------------- |
1008| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1009
1010**示例:**
1011
1012```js
1013let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1014predicates.orderByAsc("NAME");
1015```
1016
1017### orderByDesc
1018
1019orderByDesc(field: string): RdbPredicates
1020
1021配置谓词以匹配其值按降序排序的列。
1022
1023**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1024
1025**参数:**
1026
1027| 参数名 | 类型   | 必填 | 说明               |
1028| ------ | ------ | ---- | ------------------ |
1029| field  | string | 是   | 数据库表中的列名。 |
1030
1031**返回值**:
1032
1033| 类型                                 | 说明                       |
1034| ------------------------------------ | -------------------------- |
1035| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1036
1037**示例:**
1038
1039```js
1040let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1041predicates.orderByDesc("AGE");
1042```
1043
1044### distinct
1045
1046distinct(): RdbPredicates
1047
1048配置谓词以过滤重复记录并仅保留其中一个。
1049
1050**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1051
1052**返回值**:
1053
1054| 类型                                 | 说明                           |
1055| ------------------------------------ | ------------------------------ |
1056| [RdbPredicates](#rdbpredicates) | 返回可用于过滤重复记录的谓词。 |
1057
1058**示例:**
1059
1060```js
1061let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1062predicates.equalTo("NAME", "Rose").distinct();
1063```
1064
1065### limitAs
1066
1067limitAs(value: number): RdbPredicates
1068
1069设置最大数据记录数的谓词。
1070
1071**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1072
1073**参数:**
1074
1075| 参数名 | 类型   | 必填 | 说明             |
1076| ------ | ------ | ---- | ---------------- |
1077| value  | number | 是   | 最大数据记录数。 |
1078
1079**返回值**:
1080
1081| 类型                                 | 说明                                 |
1082| ------------------------------------ | ------------------------------------ |
1083| [RdbPredicates](#rdbpredicates) | 返回可用于设置最大数据记录数的谓词。 |
1084
1085**示例:**
1086
1087```js
1088let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1089predicates.equalTo("NAME", "Rose").limitAs(3);
1090```
1091
1092### offsetAs
1093
1094offsetAs(rowOffset: number): RdbPredicates
1095
1096配置RdbPredicates以指定返回结果的起始位置。
1097
1098**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1099
1100**参数:**
1101
1102| 参数名    | 类型   | 必填 | 说明                               |
1103| --------- | ------ | ---- | ---------------------------------- |
1104| rowOffset | number | 是   | 返回结果的起始位置,取值为正整数。 |
1105
1106**返回值**:
1107
1108| 类型                                 | 说明                                 |
1109| ------------------------------------ | ------------------------------------ |
1110| [RdbPredicates](#rdbpredicates) | 返回具有指定返回结果起始位置的谓词。 |
1111
1112**示例:**
1113
1114```js
1115let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1116predicates.equalTo("NAME", "Rose").offsetAs(3);
1117```
1118
1119### groupBy
1120
1121groupBy(fields: Array&lt;string&gt;): RdbPredicates
1122
1123配置RdbPredicates按指定列分组查询结果。
1124
1125**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1126
1127**参数:**
1128
1129| 参数名 | 类型                | 必填 | 说明                 |
1130| ------ | ------------------- | ---- | -------------------- |
1131| fields | Array&lt;string&gt; | 是   | 指定分组依赖的列名。 |
1132
1133**返回值**:
1134
1135| 类型                                 | 说明                   |
1136| ------------------------------------ | ---------------------- |
1137| [RdbPredicates](#rdbpredicates) | 返回分组查询列的谓词。 |
1138
1139**示例:**
1140
1141```js
1142let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1143predicates.groupBy(["AGE", "NAME"]);
1144```
1145
1146### indexedBy
1147
1148indexedBy(field: string): RdbPredicates
1149
1150配置RdbPredicates以指定索引列。
1151
1152**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1153
1154**参数:**
1155
1156| 参数名 | 类型   | 必填 | 说明           |
1157| ------ | ------ | ---- | -------------- |
1158| field  | string | 是   | 索引列的名称。 |
1159
1160**返回值**:
1161
1162
1163| 类型                                 | 说明                                  |
1164| ------------------------------------ | ------------------------------------- |
1165| [RdbPredicates](#rdbpredicates) | 返回具有指定索引列的RdbPredicates。 |
1166
1167**示例:**
1168
1169```js
1170let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1171predicates.indexedBy("SALARY_INDEX");
1172```
1173
1174### in
1175
1176in(field: string, value: Array&lt;ValueType&gt;): RdbPredicates
1177
1178配置RdbPredicates以匹配数据字段为ValueType数组且值在给定范围内的指定字段。
1179
1180**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1181
1182**参数:**
1183
1184| 参数名 | 类型                                 | 必填 | 说明                                    |
1185| ------ | ------------------------------------ | ---- | --------------------------------------- |
1186| field  | string                               | 是   | 数据库表中的列名。                      |
1187| value  | Array&lt;[ValueType](#valuetype)&gt; | 是   | 以ValueType型数组形式指定的要匹配的值。 |
1188
1189**返回值**:
1190
1191| 类型                                 | 说明                       |
1192| ------------------------------------ | -------------------------- |
1193| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1194
1195**示例:**
1196
1197```js
1198let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1199predicates.in("AGE", [18, 20]);
1200```
1201
1202### notIn
1203
1204notIn(field: string, value: Array&lt;ValueType&gt;): RdbPredicates
1205
1206将RdbPredicates配置为匹配数据字段为ValueType且值超出给定范围的指定字段。
1207
1208**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1209
1210**参数:**
1211
1212| 参数名 | 类型                                 | 必填 | 说明                                  |
1213| ------ | ------------------------------------ | ---- | ------------------------------------- |
1214| field  | string                               | 是   | 数据库表中的列名。                    |
1215| value  | Array&lt;[ValueType](#valuetype)&gt; | 是   | 以ValueType数组形式指定的要匹配的值。 |
1216
1217**返回值**:
1218
1219| 类型                                 | 说明                       |
1220| ------------------------------------ | -------------------------- |
1221| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1222
1223**示例:**
1224
1225```js
1226let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1227predicates.notIn("NAME", ["Lisa", "Rose"]);
1228```
1229
1230## RdbStore
1231
1232提供管理关系数据库(RDB)方法的接口。
1233
1234在使用以下相关接口前,请使用[executeSql](#executesql)接口初始化数据库表结构和相关数据,具体可见[关系型数据库开发指导](../../database/database-relational-guidelines.md)。
1235
1236### insert
1237
1238insert(table: string, values: ValuesBucket, callback: AsyncCallback&lt;number&gt;):void
1239
1240向目标表中插入一行数据,使用callback异步回调。
1241
1242**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1243
1244**参数:**
1245
1246| 参数名   | 类型                          | 必填 | 说明                                                       |
1247| -------- | ----------------------------- | ---- | ---------------------------------------------------------- |
1248| table    | string                        | 是   | 指定的目标表名。                                           |
1249| values   | [ValuesBucket](#valuesbucket) | 是   | 表示要插入到表中的数据行。                                 |
1250| callback | AsyncCallback&lt;number&gt;   | 是   | 指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 |
1251
1252**示例:**
1253
1254```js
1255const valueBucket = {
1256  "NAME": "Lisa",
1257  "AGE": 18,
1258  "SALARY": 100.5,
1259  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1260};
1261store.insert("EMPLOYEE", valueBucket, function (err, rowId) {
1262  if (err) {
1263    console.error(`Insert is failed, err: ${err}`);
1264    return;
1265  }
1266  console.info(`Insert is successful, rowId = ${rowId}`);
1267})
1268```
1269
1270
1271### insert
1272
1273insert(table: string, values: ValuesBucket):Promise&lt;number&gt;
1274
1275向目标表中插入一行数据,使用Promise异步回调。
1276
1277**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1278
1279**参数:**
1280
1281| 参数名 | 类型                          | 必填 | 说明                       |
1282| ------ | ----------------------------- | ---- | -------------------------- |
1283| table  | string                        | 是   | 指定的目标表名。           |
1284| values | [ValuesBucket](#valuesbucket) | 是   | 表示要插入到表中的数据行。 |
1285
1286**返回值**:
1287
1288| 类型                  | 说明                                              |
1289| --------------------- | ------------------------------------------------- |
1290| Promise&lt;number&gt; | Promise对象。如果操作成功,返回行ID;否则返回-1。 |
1291
1292**示例:**
1293
1294```js
1295const valueBucket = {
1296  "NAME": "Lisa",
1297  "AGE": 18,
1298  "SALARY": 100.5,
1299  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1300};
1301let promise = store.insert("EMPLOYEE", valueBucket);
1302promise.then((rowId) => {
1303  console.info(`Insert is successful, rowId = ${rowId}`);
1304}).catch((err) => {
1305  console.error(`Insert is failed, err: ${err}`);
1306})
1307```
1308
1309
1310### batchInsert
1311
1312batchInsert(table: string, values: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;):void
1313
1314向目标表中插入一组数据,使用callback异步回调。
1315
1316**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1317
1318**参数:**
1319
1320| 参数名   | 类型                                       | 必填 | 说明                                                         |
1321| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
1322| table    | string                                     | 是   | 指定的目标表名。                                             |
1323| values   | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是   | 表示要插入到表中的一组数据。                                 |
1324| callback | AsyncCallback&lt;number&gt;                | 是   | 指定callback回调函数。如果操作成功,返回插入的数据个数,否则返回-1。 |
1325
1326**示例:**
1327
1328```js
1329const valueBucket1 = {
1330  "NAME": "Lisa",
1331  "AGE": 18,
1332  "SALARY": 100.5,
1333  "CODES": new Uint8Array([1, 2, 3, 4, 5])
1334};
1335const valueBucket2 = {
1336  "NAME": "Jack",
1337  "AGE": 19,
1338  "SALARY": 101.5,
1339  "CODES": new Uint8Array([6, 7, 8, 9, 10])
1340};
1341const valueBucket3 = {
1342  "NAME": "Tom",
1343  "AGE": 20,
1344  "SALARY": 102.5,
1345  "CODES": new Uint8Array([11, 12, 13, 14, 15])
1346};
1347
1348let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1349store.batchInsert("EMPLOYEE", valueBuckets, function(err, insertNum) {
1350  if (err) {
1351    console.error(`batchInsert is failed, err: ${err}`);
1352    return;
1353  }
1354  console.info(`batchInsert is successful, the number of values that were inserted = ${insertNum}`);
1355})
1356```
1357
1358### batchInsert
1359
1360batchInsert(table: string, values: Array&lt;ValuesBucket&gt;):Promise&lt;number&gt;
1361
1362向目标表中插入一组数据,使用Promise异步回调。
1363
1364**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1365
1366**参数:**
1367
1368| 参数名 | 类型                                       | 必填 | 说明                         |
1369| ------ | ------------------------------------------ | ---- | ---------------------------- |
1370| table  | string                                     | 是   | 指定的目标表名。             |
1371| values | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是   | 表示要插入到表中的一组数据。 |
1372
1373**返回值**:
1374
1375| 类型                  | 说明                                                        |
1376| --------------------- | ----------------------------------------------------------- |
1377| Promise&lt;number&gt; | Promise对象。如果操作成功,返回插入的数据个数,否则返回-1。 |
1378
1379**示例:**
1380
1381```js
1382const valueBucket1 = {
1383  "NAME": "Lisa",
1384  "AGE": 18,
1385  "SALARY": 100.5,
1386  "CODES": new Uint8Array([1, 2, 3, 4, 5])
1387};
1388const valueBucket2 = {
1389  "NAME": "Jack",
1390  "AGE": 19,
1391  "SALARY": 101.5,
1392  "CODES": new Uint8Array([6, 7, 8, 9, 10])
1393};
1394const valueBucket3 = {
1395  "NAME": "Tom",
1396  "AGE": 20,
1397  "SALARY": 102.5,
1398  "CODES": new Uint8Array([11, 12, 13, 14, 15])
1399};
1400
1401let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1402let promise = store.batchInsert("EMPLOYEE", valueBuckets);
1403promise.then((insertNum) => {
1404  console.info(`batchInsert is successful, the number of values that were inserted = ${insertNum}`);
1405}).catch((err) => {
1406  console.error(`batchInsert is failed, err: ${err}`);
1407})
1408```
1409
1410### update
1411
1412update(values: ValuesBucket, predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void
1413
1414根据RdbPredicates的指定实例对象更新数据库中的数据,使用callback异步回调。
1415
1416**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1417
1418**参数:**
1419
1420| 参数名     | 类型                                 | 必填 | 说明                                                         |
1421| ---------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
1422| values     | [ValuesBucket](#valuesbucket)        | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1423| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的更新条件。                    |
1424| callback   | AsyncCallback&lt;number&gt;          | 是   | 指定的callback回调方法。返回受影响的行数。                   |
1425
1426**示例:**
1427
1428```js
1429const valueBucket = {
1430  "NAME": "Rose",
1431  "AGE": 22,
1432  "SALARY": 200.5,
1433  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1434};
1435let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1436predicates.equalTo("NAME", "Lisa");
1437store.update(valueBucket, predicates, function (err, rows) {
1438  if (err) {
1439    console.error(`Updated failed, err: ${err}`);
1440    return;
1441  }
1442  console.info(`Updated row count: ${rows}`);
1443})
1444```
1445
1446
1447### update
1448
1449update(values: ValuesBucket, predicates: RdbPredicates):Promise&lt;number&gt;
1450
1451根据RdbPredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。
1452
1453**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1454
1455**参数:**
1456
1457| 参数名       | 类型                                 | 必填 | 说明                                                         |
1458| ------------ | ------------------------------------ | ---- | ------------------------------------------------------------ |
1459| values       | [ValuesBucket](#valuesbucket)        | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1460| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的更新条件。                    |
1461
1462**返回值**:
1463
1464| 类型                  | 说明                                      |
1465| --------------------- | ----------------------------------------- |
1466| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |
1467
1468**示例:**
1469
1470```js
1471const valueBucket = {
1472  "NAME": "Rose",
1473  "AGE": 22,
1474  "SALARY": 200.5,
1475  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1476};
1477let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1478predicates.equalTo("NAME", "Lisa");
1479let promise = store.update(valueBucket, predicates);
1480promise.then(async (rows) => {
1481  console.info(`Updated row count: ${rows}`);
1482}).catch((err) => {
1483  console.error(`Updated failed, err: ${err}`);
1484})
1485```
1486
1487
1488### update
1489
1490update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void
1491
1492根据DataSharePredicates的指定实例对象更新数据库中的数据,使用callback异步回调。
1493
1494**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1495
1496**系统接口:** 此接口为系统接口。
1497
1498**参数:**
1499
1500| 参数名     | 类型                                                         | 必填 | 说明                                                         |
1501| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1502| table      | string                                                       | 是   | 指定的目标表名。                                             |
1503| values     | [ValuesBucket](#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1504| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |
1505| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定的callback回调方法。返回受影响的行数。                   |
1506
1507**示例:**
1508
1509```js
1510import dataSharePredicates from '@ohos.data.dataSharePredicates'
1511const valueBucket = {
1512    "NAME": "Rose",
1513    "AGE": 22,
1514    "SALARY": 200.5,
1515    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1516};
1517let predicates = new dataSharePredicates.DataSharePredicates();
1518predicates.equalTo("NAME", "Lisa");
1519store.update("EMPLOYEE", valueBucket, predicates, function (err, rows) {
1520  if (err) {
1521    console.error(`Updated failed, err: ${err}`);
1522    return;
1523  }
1524  console.info(`Updated row count: ${rows}`);
1525})
1526```
1527
1528### update
1529
1530update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;
1531
1532根据DataSharePredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。
1533
1534**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1535
1536**系统接口:** 此接口为系统接口。
1537
1538**参数:**
1539
1540| 参数名     | 类型                                                         | 必填 | 说明                                                         |
1541| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1542| table      | string                                                       | 是   | 指定的目标表名。                                             |
1543| values     | [ValuesBucket](#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1544| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |
1545
1546**返回值**:
1547
1548| 类型                  | 说明                                      |
1549| --------------------- | ----------------------------------------- |
1550| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |
1551
1552**示例:**
1553
1554```js
1555import dataSharePredicates from '@ohos.data.dataSharePredicates'
1556const valueBucket = {
1557  "NAME": "Rose",
1558  "AGE": 22,
1559  "SALARY": 200.5,
1560  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1561};
1562let predicates = new dataSharePredicates.DataSharePredicates();
1563predicates.equalTo("NAME", "Lisa");
1564let promise = store.update("EMPLOYEE", valueBucket, predicates);
1565promise.then(async (rows) => {
1566  console.info(`Updated row count: ${rows}`);
1567}).catch((err) => {
1568  console.error(`Updated failed, err: ${err}`);
1569})
1570```
1571
1572### delete
1573
1574delete(predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void
1575
1576根据RdbPredicates的指定实例对象从数据库中删除数据,使用callback异步回调。
1577
1578**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1579
1580**参数:**
1581
1582| 参数名     | 类型                                 | 必填 | 说明                                      |
1583| ---------- | ------------------------------------ | ---- | ----------------------------------------- |
1584| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的删除条件。 |
1585| callback   | AsyncCallback&lt;number&gt;          | 是   | 指定callback回调函数。返回受影响的行数。  |
1586
1587**示例:**
1588
1589```js
1590let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1591predicates.equalTo("NAME", "Lisa");
1592store.delete(predicates, function (err, rows) {
1593  if (err) {
1594    console.error(`Delete failed, err: ${err}`);
1595    return;
1596  }
1597  console.info(`Delete rows: ${rows}`);
1598})
1599```
1600
1601### delete
1602
1603delete(predicates: RdbPredicates):Promise&lt;number&gt;
1604
1605根据RdbPredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。
1606
1607**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1608
1609**参数:**
1610
1611| 参数名     | 类型                                 | 必填 | 说明                                      |
1612| ---------- | ------------------------------------ | ---- | ----------------------------------------- |
1613| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的删除条件。 |
1614
1615**返回值**:
1616
1617| 类型                  | 说明                            |
1618| --------------------- | ------------------------------- |
1619| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |
1620
1621**示例:**
1622
1623```js
1624let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1625predicates.equalTo("NAME", "Lisa");
1626let promise = store.delete(predicates);
1627promise.then((rows) => {
1628  console.info(`Delete rows: ${rows}`);
1629}).catch((err) => {
1630  console.error(`Delete failed, err: ${err}`);
1631})
1632```
1633
1634### delete
1635
1636delete(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void
1637
1638根据DataSharePredicates的指定实例对象从数据库中删除数据,使用callback异步回调。
1639
1640**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1641
1642**系统接口:** 此接口为系统接口。
1643
1644**参数:**
1645
1646| 参数名     | 类型                                                         | 必填 | 说明                                          |
1647| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
1648| table      | string                                                       | 是   | 指定的目标表名。                              |
1649| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |
1650| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定callback回调函数。返回受影响的行数。      |
1651
1652**示例:**
1653
1654```js
1655import dataSharePredicates from '@ohos.data.dataSharePredicates'
1656let predicates = new dataSharePredicates.DataSharePredicates();
1657predicates.equalTo("NAME", "Lisa");
1658store.delete("EMPLOYEE", predicates, function (err, rows) {
1659  if (err) {
1660    console.error(`Delete failed, err: ${err}`);
1661    return;
1662  }
1663  console.info(`Delete rows: ${rows}`);
1664})
1665```
1666
1667### delete
1668
1669delete(table: string, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;
1670
1671根据DataSharePredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。
1672
1673**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1674
1675**系统接口:** 此接口为系统接口。
1676
1677**参数:**
1678
1679| 参数名     | 类型                                                         | 必填 | 说明                                          |
1680| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
1681| table      | string                                                       | 是   | 指定的目标表名。                              |
1682| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |
1683
1684**返回值**:
1685
1686| 类型                  | 说明                            |
1687| --------------------- | ------------------------------- |
1688| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |
1689
1690**示例:**
1691
1692```js
1693import dataSharePredicates from '@ohos.data.dataSharePredicates'
1694let predicates = new dataSharePredicates.DataSharePredicates();
1695predicates.equalTo("NAME", "Lisa");
1696let promise = store.delete("EMPLOYEE", predicates);
1697promise.then((rows) => {
1698  console.info(`Delete rows: ${rows}`);
1699}).catch((err) => {
1700  console.error(`Delete failed, err: ${err}`);
1701})
1702```
1703
1704### query
1705
1706query(predicates: RdbPredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
1707
1708根据指定条件查询数据库中的数据,使用callback异步回调。
1709
1710**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1711
1712**参数:**
1713
1714| 参数名     | 类型                                                         | 必填 | 说明                                                        |
1715| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
1716| predicates | [RdbPredicates](#rdbpredicates)                         | 是   | RdbPredicates的实例对象指定的查询条件。                   |
1717| columns    | Array&lt;string&gt;                                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。            |
1718| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1719
1720**示例:**
1721
1722```js
1723let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1724predicates.equalTo("NAME", "Rose");
1725store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], function (err, resultSet) {
1726  if (err) {
1727    console.error(`Query failed, err: ${err}`);
1728    return;
1729  }
1730  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1731  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1732})
1733```
1734
1735### query
1736
1737query(predicates: RdbPredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;
1738
1739根据指定条件查询数据库中的数据,使用Promise异步回调。
1740
1741**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1742
1743**参数:**
1744
1745| 参数名     | 类型                                 | 必填 | 说明                                             |
1746| ---------- | ------------------------------------ | ---- | ------------------------------------------------ |
1747| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的查询条件。        |
1748| columns    | Array&lt;string&gt;                  | 否   | 表示要查询的列。如果值为空,则查询应用于所有列。 |
1749
1750**返回值**:
1751
1752| 类型                                                    | 说明                                               |
1753| ------------------------------------------------------- | -------------------------------------------------- |
1754| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1755
1756**示例:**
1757
1758  ```js
1759let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
1760predicates.equalTo("NAME", "Rose");
1761let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
1762promise.then((resultSet) => {
1763  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1764  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1765}).catch((err) => {
1766  console.error(`Query failed, err: ${err}`);
1767})
1768  ```
1769
1770### query
1771
1772query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
1773
1774根据指定条件查询数据库中的数据,使用callback异步回调。
1775
1776**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1777
1778**系统接口:** 此接口为系统接口。
1779
1780**参数:**
1781
1782| 参数名     | 类型                                                         | 必填 | 说明                                                        |
1783| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
1784| table      | string                                                       | 是   | 指定的目标表名。                                            |
1785| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。               |
1786| columns    | Array&lt;string&gt;                                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。            |
1787| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1788
1789**示例:**
1790
1791```js
1792import dataSharePredicates from '@ohos.data.dataSharePredicates'
1793let predicates = new dataSharePredicates.DataSharePredicates();
1794predicates.equalTo("NAME", "Rose");
1795store.query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], function (err, resultSet) {
1796  if (err) {
1797    console.error(`Query failed, err: ${err}`);
1798    return;
1799  }
1800  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1801  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1802})
1803```
1804
1805### query
1806
1807query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;
1808
1809根据指定条件查询数据库中的数据,使用Promise异步回调。
1810
1811**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1812
1813**系统接口:** 此接口为系统接口。
1814
1815**参数:**
1816
1817| 参数名     | 类型                                                         | 必填 | 说明                                             |
1818| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------ |
1819| table      | string                                                       | 是   | 指定的目标表名。                                 |
1820| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。    |
1821| columns    | Array&lt;string&gt;                                          | 否   | 表示要查询的列。如果值为空,则查询应用于所有列。 |
1822
1823**返回值**:
1824
1825| 类型                                                    | 说明                                               |
1826| ------------------------------------------------------- | -------------------------------------------------- |
1827| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1828
1829**示例:**
1830
1831```js
1832import dataSharePredicates from '@ohos.data.dataSharePredicates'
1833let predicates = new dataSharePredicates.DataSharePredicates();
1834predicates.equalTo("NAME", "Rose");
1835let promise = store.query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
1836promise.then((resultSet) => {
1837  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1838  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1839}).catch((err) => {
1840  console.error(`Query failed, err: ${err}`);
1841})
1842```
1843
1844### remoteQuery
1845
1846remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array&lt;string&gt; , callback: AsyncCallback&lt;ResultSet&gt;): void
1847
1848根据指定条件查询远程设备数据库中的数据。使用callback异步回调。
1849
1850> **说明:**
1851>
1852> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
1853
1854**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1855
1856**参数:**
1857
1858| 参数名     | 类型                                         | 必填 | 说明                                                      |
1859| ---------- | -------------------------------------------- | ---- | --------------------------------------------------------- |
1860| device     | string                                       | 是   | 指定的远程设备ID。                                        |
1861| table      | string                                       | 是   | 指定的目标表名。                                          |
1862| predicates | [RdbPredicates](#rdbpredicates)              | 是   | RdbPredicates的实例对象,指定查询的条件。                 |
1863| columns    | Array&lt;string&gt;                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。          |
1864| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1865
1866**示例:**
1867
1868```js
1869import deviceManager from '@ohos.distributedHardware.deviceManager';
1870let dmInstance = null;
1871
1872deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
1873    if (err) {
1874        console.log("create device manager failed, err=" + err);
1875        return;
1876    }
1877    dmInstance = manager;
1878    let devices = dmInstance.getTrustedDeviceListSync();
1879    let deviceId = devices[0].deviceId;
1880})
1881
1882let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
1883predicates.greaterThan("id", 0);
1884store.remoteQuery(deviceId, "EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"],
1885  function(err, resultSet) {
1886    if (err) {
1887      console.error(`Failed to remoteQuery, err: ${err}`);
1888      return;
1889    }
1890    console.info(`ResultSet column names: ${resultSet.columnNames}`);
1891    console.info(`ResultSet column count: ${resultSet.columnCount}`);
1892  }
1893)
1894```
1895
1896### remoteQuery
1897
1898remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array&lt;string&gt;): Promise&lt;ResultSet&gt;
1899
1900根据指定条件查询远程设备数据库中的数据。使用Promise异步回调。
1901
1902> **说明:**
1903>
1904> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
1905
1906**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1907
1908**参数:**
1909
1910| 参数名     | 类型                                 | 必填 | 说明                                             |
1911| ---------- | ------------------------------------ | ---- | ------------------------------------------------ |
1912| device     | string                               | 是   | 指定的远程设备ID。                   |
1913| table      | string                               | 是   | 指定的目标表名。                                 |
1914| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象,指定查询的条件。      |
1915| columns    | Array&lt;string&gt;                  | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。 |
1916
1917**返回值**:
1918
1919| 类型                                                         | 说明                                               |
1920| ------------------------------------------------------------ | -------------------------------------------------- |
1921| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1922
1923**示例:**
1924
1925```js
1926import deviceManager from '@ohos.distributedHardware.deviceManager';
1927let dmInstance = null;
1928
1929deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
1930    if (err) {
1931        console.log("create device manager failed, err=" + err);
1932        return;
1933    }
1934    dmInstance = manager;
1935    let devices = dmInstance.getTrustedDeviceListSync();
1936    let deviceId = devices[0].deviceId;
1937})
1938
1939let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
1940predicates.greaterThan("id", 0);
1941let promise = store.remoteQuery("deviceId", "EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
1942promise.then((resultSet) => {
1943  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1944  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1945}).catch((err) => {
1946  console.error(`Failed to remoteQuery, err: ${err}`);
1947})
1948```
1949
1950### querySql
1951
1952querySql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
1953
1954根据指定SQL语句查询数据库中的数据,使用callback异步回调。
1955
1956**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1957
1958**参数:**
1959
1960| 参数名   | 类型                                                         | 必填 | 说明                                                        |
1961| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
1962| sql      | string                                                       | 是   | 指定要执行的SQL语句。                                       |
1963| bindArgs | Array&lt;[ValueType](#valuetype)&gt;                         | 是   | SQL语句中参数的值。                                         |
1964| callback | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
1965
1966**示例:**
1967
1968```js
1969store.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo'], function (err, resultSet) {
1970  if (err) {
1971    console.error(`Query failed, err: ${err}`);
1972    return;
1973  }
1974  console.info(`ResultSet column names: ${resultSet.columnNames}`);
1975  console.info(`ResultSet column count: ${resultSet.columnCount}`);
1976})
1977```
1978
1979### querySql
1980
1981querySql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt;
1982
1983根据指定SQL语句查询数据库中的数据,使用Promise异步回调。
1984
1985**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
1986
1987**参数:**
1988
1989| 参数名   | 类型                                 | 必填 | 说明                  |
1990| -------- | ------------------------------------ | ---- | --------------------- |
1991| sql      | string                               | 是   | 指定要执行的SQL语句。 |
1992| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否   | SQL语句中参数的值。   |
1993
1994**返回值**:
1995
1996| 类型                                                    | 说明                                               |
1997| ------------------------------------------------------- | -------------------------------------------------- |
1998| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
1999
2000**示例:**
2001
2002```js
2003let promise = store.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo']);
2004promise.then((resultSet) => {
2005  console.info(`ResultSet column names: ${resultSet.columnNames}`);
2006  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2007}).catch((err) => {
2008  console.error(`Query failed, err: ${err}`);
2009})
2010```
2011
2012### executeSql
2013
2014executeSql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;void&gt;):void
2015
2016执行包含指定参数但不返回值的SQL语句,使用callback异步回调。
2017
2018**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2019
2020**参数:**
2021
2022| 参数名   | 类型                                 | 必填 | 说明                   |
2023| -------- | ------------------------------------ | ---- | ---------------------- |
2024| sql      | string                               | 是   | 指定要执行的SQL语句。  |
2025| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是   | SQL语句中参数的值。    |
2026| callback | AsyncCallback&lt;void&gt;            | 是   | 指定callback回调函数。 |
2027
2028**示例:**
2029
2030```js
2031const SQL_CREATE_TABLE = "CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)"
2032store.executeSql(SQL_CREATE_TABLE, null, function(err) {
2033  if (err) {
2034    console.error(`ExecuteSql failed, err: ${err}`);
2035    return;
2036  }
2037  console.info(`Create table done.`);
2038})
2039```
2040
2041### executeSql
2042
2043executeSql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;void&gt;
2044
2045执行包含指定参数但不返回值的SQL语句,使用Promise异步回调。
2046
2047**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2048
2049**参数:**
2050
2051| 参数名   | 类型                                 | 必填 | 说明                  |
2052| -------- | ------------------------------------ | ---- | --------------------- |
2053| sql      | string                               | 是   | 指定要执行的SQL语句。 |
2054| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否   | SQL语句中参数的值。   |
2055
2056**返回值**:
2057
2058| 类型                | 说明                      |
2059| ------------------- | ------------------------- |
2060| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
2061
2062**示例:**
2063
2064```js
2065const SQL_CREATE_TABLE = "CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)"
2066let promise = store.executeSql(SQL_CREATE_TABLE);
2067promise.then(() => {
2068    console.info(`Create table done.`);
2069}).catch((err) => {
2070    console.error(`ExecuteSql failed, err: ${err}`);
2071})
2072```
2073
2074### beginTransaction
2075
2076beginTransaction():void
2077
2078在开始执行SQL语句之前,开始事务。
2079
2080**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2081
2082**示例:**
2083
2084```js
2085import featureAbility from '@ohos.ability.featureAbility'
2086let context = featureAbility.getContext();
2087const STORE_CONFIG = {
2088  name: "RdbTest.db",
2089  securityLevel: relationalStore.SecurityLevel.S1
2090};
2091relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
2092  if (err) {
2093    console.error(`GetRdbStore failed, err: ${err}`);
2094    return;
2095  }
2096  store.beginTransaction();
2097  const valueBucket = {
2098    "name": "lisi",
2099	"age": 18,
2100	"salary": 100.5,
2101	"blobType": new Uint8Array([1, 2, 3]),
2102  };
2103  await store.insert("test", valueBucket);
2104  store.commit();
2105})
2106```
2107
2108### commit
2109
2110commit():void
2111
2112提交已执行的SQL语句。
2113
2114**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2115
2116**示例:**
2117
2118```js
2119import featureAbility from '@ohos.ability.featureAbility'
2120let context = featureAbility.getContext();
2121const STORE_CONFIG = {
2122  name: "RdbTest.db",
2123  securityLevel: relationalStore.SecurityLevel.S1
2124};
2125relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
2126  if (err) {
2127     console.error(`GetRdbStore failed, err: ${err}`);
2128     return;
2129  }
2130  store.beginTransaction();
2131  const valueBucket = {
2132	"name": "lisi",
2133	"age": 18,
2134	"salary": 100.5,
2135	"blobType": new Uint8Array([1, 2, 3]),
2136  };
2137  await store.insert("test", valueBucket);
2138  store.commit();
2139})
2140```
2141
2142### rollBack
2143
2144rollBack():void
2145
2146回滚已经执行的SQL语句。
2147
2148**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2149
2150**示例:**
2151
2152```js
2153import featureAbility from '@ohos.ability.featureAbility'
2154let context = featureAbility.getContext();
2155const STORE_CONFIG = {
2156  name: "RdbTest.db",
2157  securityLevel: relationalStore.SecurityLevel.S1
2158};
2159relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
2160  if (err) {
2161    console.error(`GetRdbStore failed, err: ${err}`);
2162    return;
2163  }
2164  try {
2165    store.beginTransaction()
2166    const valueBucket = {
2167	  "id": 1,
2168	  "name": "lisi",
2169	  "age": 18,
2170	  "salary": 100.5,
2171	  "blobType": new Uint8Array([1, 2, 3]),
2172	};
2173	await store.insert("test", valueBucket);
2174    store.commit();
2175  } catch (err) {
2176    console.error(`Transaction failed, err: ${err}`);
2177    store.rollBack();
2178  }
2179})
2180```
2181
2182### backup
2183
2184backup(destName:string, callback: AsyncCallback&lt;void&gt;):void
2185
2186以指定名称备份数据库,使用callback异步回调。
2187
2188**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2189
2190**参数:**
2191
2192| 参数名   | 类型                      | 必填 | 说明                     |
2193| -------- | ------------------------- | ---- | ------------------------ |
2194| destName | string                    | 是   | 指定数据库的备份文件名。 |
2195| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。   |
2196
2197**示例:**
2198
2199```js
2200store.backup("dbBackup.db", function(err) {
2201  if (err) {
2202    console.error(`Backup failed, err: ${err}`);
2203    return;
2204  }
2205  console.info(`Backup success.`);
2206})
2207```
2208
2209### backup
2210
2211backup(destName:string): Promise&lt;void&gt;
2212
2213以指定名称备份数据库,使用Promise异步回调。
2214
2215**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2216
2217**参数:**
2218
2219| 参数名   | 类型   | 必填 | 说明                     |
2220| -------- | ------ | ---- | ------------------------ |
2221| destName | string | 是   | 指定数据库的备份文件名。 |
2222
2223**返回值**:
2224
2225| 类型                | 说明                      |
2226| ------------------- | ------------------------- |
2227| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
2228
2229**示例:**
2230
2231```js
2232let promiseBackup = store.backup("dbBackup.db");
2233promiseBackup.then(()=>{
2234  console.info(`Backup success.`);
2235}).catch((err)=>{
2236  console.error(`Backup failed, err: ${err}`);
2237})
2238```
2239
2240### restore
2241
2242restore(srcName:string, callback: AsyncCallback&lt;void&gt;):void
2243
2244从指定的数据库备份文件恢复数据库,使用callback异步回调。
2245
2246**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2247
2248**参数:**
2249
2250| 参数名   | 类型                      | 必填 | 说明                     |
2251| -------- | ------------------------- | ---- | ------------------------ |
2252| srcName  | string                    | 是   | 指定数据库的备份文件名。 |
2253| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。   |
2254
2255**示例:**
2256
2257```js
2258store.restore("dbBackup.db", function(err) {
2259  if (err) {
2260    console.error(`Restore failed, err: ${err}`);
2261    return;
2262  }
2263  console.info(`Restore success.`);
2264})
2265```
2266
2267### restore
2268
2269restore(srcName:string): Promise&lt;void&gt;
2270
2271从指定的数据库备份文件恢复数据库,使用Promise异步回调。
2272
2273**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2274
2275**参数:**
2276
2277| 参数名  | 类型   | 必填 | 说明                     |
2278| ------- | ------ | ---- | ------------------------ |
2279| srcName | string | 是   | 指定数据库的备份文件名。 |
2280
2281**返回值**:
2282
2283| 类型                | 说明                      |
2284| ------------------- | ------------------------- |
2285| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
2286
2287**示例:**
2288
2289```js
2290let promiseRestore = store.restore("dbBackup.db");
2291promiseRestore.then(()=>{
2292  console.info(`Restore success.`);
2293}).catch((err)=>{
2294  console.error(`Restore failed, err: ${err}`);
2295})
2296```
2297
2298### setDistributedTables
2299
2300setDistributedTables(tables: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void
2301
2302设置分布式列表,使用callback异步回调。
2303
2304**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2305
2306**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2307
2308**参数:**
2309
2310| 参数名   | 类型                      | 必填 | 说明                   |
2311| -------- | ------------------------- | ---- | ---------------------- |
2312| tables   | Array&lt;string&gt;       | 是   | 要设置的分布式列表表名 |
2313| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。 |
2314
2315**示例:**
2316
2317```js
2318store.setDistributedTables(["EMPLOYEE"], function (err) {
2319  if (err) {
2320    console.error(`SetDistributedTables failed, err: ${err}`);
2321    return;
2322  }
2323  console.info(`SetDistributedTables successfully.`);
2324})
2325```
2326
2327### setDistributedTables
2328
2329 setDistributedTables(tables: Array&lt;string&gt;): Promise&lt;void&gt;
2330
2331设置分布式列表,使用Promise异步回调。
2332
2333**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2334
2335**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2336
2337**参数:**
2338
2339| 参数名 | 类型                | 必填 | 说明                     |
2340| ------ | ------------------- | ---- | ------------------------ |
2341| tables | Array&lt;string&gt; | 是   | 要设置的分布式列表表名。 |
2342
2343**返回值**:
2344
2345| 类型                | 说明                      |
2346| ------------------- | ------------------------- |
2347| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
2348
2349**示例:**
2350
2351```js
2352let promise = store.setDistributedTables(["EMPLOYEE"]);
2353promise.then(() => {
2354  console.info(`SetDistributedTables successfully.`);
2355}).catch((err) => {
2356  console.error(`SetDistributedTables failed, err: ${err}`);
2357})
2358```
2359
2360### obtainDistributedTableName
2361
2362obtainDistributedTableName(device: string, table: string, callback: AsyncCallback&lt;string&gt;): void
2363
2364根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名, 使用callback异步回调。
2365
2366> **说明:**
2367>
2368> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
2369
2370**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2371
2372**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2373
2374**参数:**
2375
2376| 参数名   | 类型                        | 必填 | 说明                                                         |
2377| -------- | --------------------------- | ---- | ------------------------------------------------------------ |
2378| device   | string                      | 是   | 远程设备ID 。                                                |
2379| table    | string                      | 是   | 远程设备的本地表名。                                         |
2380| callback | AsyncCallback&lt;string&gt; | 是   | 指定的callback回调函数。如果操作成功,返回远程设备的分布式表名。 |
2381
2382**示例:**
2383
2384```js
2385import deviceManager from '@ohos.distributedHardware.deviceManager';
2386let dmInstance = null;
2387
2388deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
2389    if (err) {
2390        console.log("create device manager failed, err=" + err);
2391        return;
2392    }
2393    dmInstance = manager;
2394    let devices = dmInstance.getTrustedDeviceListSync();
2395    let deviceId = devices[0].deviceId;
2396})
2397
2398store.obtainDistributedTableName(deviceId, "EMPLOYEE", function (err, tableName) {
2399    if (err) {
2400        console.error(`ObtainDistributedTableName failed, err: ${err}`);
2401        return;
2402    }
2403    console.info(`ObtainDistributedTableName successfully, tableName= ${tableName}`);
2404})
2405```
2406
2407### obtainDistributedTableName
2408
2409 obtainDistributedTableName(device: string, table: string): Promise&lt;string&gt;
2410
2411根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名,使用Promise异步回调。
2412
2413> **说明:**
2414>
2415> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
2416
2417**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2418
2419**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2420
2421**参数:**
2422
2423| 参数名 | 类型   | 必填 | 说明                 |
2424| ------ | ------ | ---- | -------------------- |
2425| device | string | 是   | 远程设备ID。         |
2426| table  | string | 是   | 远程设备的本地表名。 |
2427
2428**返回值**:
2429
2430| 类型                  | 说明                                                  |
2431| --------------------- | ----------------------------------------------------- |
2432| Promise&lt;string&gt; | Promise对象。如果操作成功,返回远程设备的分布式表名。 |
2433
2434**示例:**
2435
2436```js
2437import deviceManager from '@ohos.distributedHardware.deviceManager';
2438let dmInstance = null;
2439
2440deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
2441    if (err) {
2442        console.log("create device manager failed, err=" + err);
2443        return;
2444    }
2445    dmInstance = manager;
2446    let devices = dmInstance.getTrustedDeviceListSync();
2447    let deviceId = devices[0].deviceId;
2448})
2449
2450let promise = store.obtainDistributedTableName(deviceId, "EMPLOYEE");
2451promise.then((tableName) => {
2452  console.info(`ObtainDistributedTableName successfully, tableName= ${tableName}`);
2453}).catch((err) => {
2454  console.error(`ObtainDistributedTableName failed, err: ${err}`);
2455})
2456```
2457
2458### sync
2459
2460sync(mode: SyncMode, predicates: RdbPredicates, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;): void
2461
2462在设备之间同步数据, 使用callback异步回调。
2463
2464**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2465
2466**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2467
2468**参数:**
2469
2470| 参数名     | 类型                                               | 必填 | 说明                                                         |
2471| ---------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
2472| mode       | [SyncMode](#syncmode)                             | 是   | 指同步模式。该值可以是推、拉。                               |
2473| predicates | [RdbPredicates](#rdbpredicates)               | 是   | 约束同步数据和设备。                                         |
2474| callback   | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是   | 指定的callback回调函数,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |
2475
2476**示例:**
2477
2478```js
2479import deviceManager from '@ohos.distributedHardware.deviceManager';
2480let dmInstance = null;
2481
2482deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
2483    if (err) {
2484        console.log("create device manager failed, err=" + err);
2485        return;
2486    }
2487    dmInstance = manager;
2488    let devices = dmInstance.getTrustedDeviceListSync();
2489    let deviceIds = [];
2490    for (var i = 0; i < devices.length; i++) {
2491        deviceIds[i] = devices[i].deviceId;
2492    }
2493})
2494
2495let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
2496predicates.inDevices(deviceIds);
2497store.sync(relationalStore.SyncMode.SYNC_MODE_PUSH, predicates, function (err, result) {
2498  if (err) {
2499    console.error(`Sync failed, err: ${err}`);
2500    return;
2501  }
2502  console.info(`Sync done.`);
2503  for (let i = 0; i < result.length; i++) {
2504    console.info(`device= ${result[i][0]}, status= ${result[i][1]}`);
2505  }
2506})
2507```
2508
2509### sync
2510
2511 sync(mode: SyncMode, predicates: RdbPredicates): Promise&lt;Array&lt;[string, number]&gt;&gt;
2512
2513在设备之间同步数据,使用Promise异步回调。
2514
2515**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC
2516
2517**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2518
2519**参数:**
2520
2521| 参数名     | 类型                                 | 必填 | 说明                           |
2522| ---------- | ------------------------------------ | ---- | ------------------------------ |
2523| mode       | [SyncMode](#syncmode)               | 是   | 指同步模式。该值可以是推、拉。 |
2524| predicates | [RdbPredicates](#rdbpredicates) | 是   | 约束同步数据和设备。           |
2525
2526**返回值**:
2527
2528| 类型                                         | 说明                                                         |
2529| -------------------------------------------- | ------------------------------------------------------------ |
2530| Promise&lt;Array&lt;[string, number]&gt;&gt; | Promise对象,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |
2531
2532**示例:**
2533
2534```js
2535import deviceManager from '@ohos.distributedHardware.deviceManager';
2536let dmInstance = null;
2537
2538deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
2539    if (err) {
2540        console.log("create device manager failed, err=" + err);
2541        return;
2542    }
2543    dmInstance = manager;
2544    let devices = dmInstance.getTrustedDeviceListSync();
2545    let deviceIds = [];
2546    for (var i = 0; i < devices.length; i++) {
2547        deviceIds[i] = devices[i].deviceId;
2548    }
2549})
2550
2551let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
2552predicates.inDevices(deviceIds);
2553let promise = store.sync(relationalStore.SyncMode.SYNC_MODE_PUSH, predicates);
2554promise.then((result) =>{
2555  console.info(`Sync done.`);
2556  for (let i = 0; i < result.length; i++) {
2557    console.info(`device= ${result[i][0]}, status= ${result[i][1]}`);
2558  }
2559}).catch((err) => {
2560  console.error(`Sync failed, err: ${err}`);
2561})
2562```
2563
2564### on('dataChange')
2565
2566on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
2567
2568注册数据库的观察者。当分布式数据库中的数据发生更改时,将调用回调。
2569
2570**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2571
2572**参数:**
2573
2574| 参数名   | 类型                                | 必填 | 说明                                        |
2575| -------- | ----------------------------------- | ---- | ------------------------------------------- |
2576| event    | string                              | 是   | 取值为'dataChange',表示数据更改。          |
2577| type     | [SubscribeType](#subscribetype)    | 是   | 订阅类型。 |
2578| observer | Callback&lt;Array&lt;string&gt;&gt; | 是   | 指分布式数据库中数据更改事件的观察者。      |
2579
2580**示例:**
2581
2582```js
2583function storeObserver(devices) {
2584  for (let i = 0; i < devices.length; i++) {
2585    console.info(`device= ${devices[i]} data changed`);
2586  }
2587}
2588try {
2589  store.on('dataChange', relationalStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver);
2590} catch (err) {
2591  console.error(`Register observer failed, err: ${err}`);
2592}
2593```
2594
2595### off('dataChange')
2596
2597off(event:'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
2598
2599从数据库中删除指定类型的指定观察者, 使用callback异步回调。
2600
2601**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2602
2603**参数:**
2604
2605| 参数名   | 类型                                | 必填 | 说明                                        |
2606| -------- | ---------------------------------- | ---- | ------------------------------------------ |
2607| event    | string                              | 是   | 取值为'dataChange',表示数据更改。          |
2608| type     | [SubscribeType](#subscribetype)     | 是   | 订阅类型。                                 |
2609| observer | Callback&lt;Array&lt;string&gt;&gt; | 是   | 指已注册的数据更改观察者。                  |
2610
2611**示例:**
2612
2613```js
2614function storeObserver(devices) {
2615  for (let i = 0; i < devices.length; i++) {
2616    console.info(`device= ${devices[i]} data changed`);
2617  }
2618}
2619try {
2620  store.off('dataChange', relationalStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver);
2621} catch (err) {
2622  console.error(`Unregister observer failed, err: ${err}`);
2623}
2624```
2625
2626## ResultSet
2627
2628提供通过查询数据库生成的数据库结果集的访问方法。结果集是指用户调用关系型数据库查询接口之后返回的结果集合,提供了多种灵活的数据访问方式,以便用户获取各项数据。
2629
2630### 使用说明
2631
2632首先需要获取resultSet对象。
2633
2634```js
2635let resultSet = null;
2636let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2637predicates.equalTo("AGE", 18);
2638let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2639promise.then((result) => {
2640  resultSet = result;
2641  console.info(`resultSet columnNames: ${resultSet.columnNames}`);
2642  console.info(`resultSet columnCount: ${resultSet.columnCount}`);
2643});
2644```
2645
2646### 属性
2647
2648**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2649
2650| 名称         | 类型            | 必填 | 说明                             |
2651| ------------ | ------------------- | ---- | -------------------------------- |
2652| columnNames  | Array&lt;string&gt; | 是   | 获取结果集中所有列的名称。       |
2653| columnCount  | number              | 是   | 获取结果集中的列数。             |
2654| rowCount     | number              | 是   | 获取结果集中的行数。             |
2655| rowIndex     | number              | 是   | 获取结果集当前行的索引。         |
2656| isAtFirstRow | boolean             | 是   | 检查结果集是否位于第一行。       |
2657| isAtLastRow  | boolean             | 是   | 检查结果集是否位于最后一行。     |
2658| isEnded      | boolean             | 是   | 检查结果集是否位于最后一行之后。 |
2659| isStarted    | boolean             | 是   | 检查指针是否移动过。             |
2660| isClosed     | boolean             | 是   | 检查当前结果集是否关闭。         |
2661
2662### getColumnIndex
2663
2664getColumnIndex(columnName: string): number
2665
2666根据指定的列名获取列索引。
2667
2668**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2669
2670**参数:**
2671
2672| 参数名     | 类型   | 必填 | 说明                       |
2673| ---------- | ------ | ---- | -------------------------- |
2674| columnName | string | 是   | 表示结果集中指定列的名称。 |
2675
2676**返回值:**
2677
2678| 类型   | 说明               |
2679| ------ | ------------------ |
2680| number | 返回指定列的索引。 |
2681
2682**错误码:**
2683
2684以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2685
2686| **错误码ID** | **错误信息**                                                 |
2687| ------------ | ------------------------------------------------------------ |
2688| 14800013     | The column value is null or the column type is incompatible. |
2689
2690**示例:**
2691
2692  ```js
2693resultSet.goToFirstRow();
2694const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
2695const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
2696const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
2697const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
2698  ```
2699
2700### getColumnName
2701
2702getColumnName(columnIndex: number): string
2703
2704根据指定的列索引获取列名。
2705
2706**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2707
2708**参数:**
2709
2710| 参数名      | 类型   | 必填 | 说明                       |
2711| ----------- | ------ | ---- | -------------------------- |
2712| columnIndex | number | 是   | 表示结果集中指定列的索引。 |
2713
2714**返回值:**
2715
2716| 类型   | 说明               |
2717| ------ | ------------------ |
2718| string | 返回指定列的名称。 |
2719
2720**错误码:**
2721
2722以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2723
2724| **错误码ID** | **错误信息**                                                 |
2725| ------------ | ------------------------------------------------------------ |
2726| 14800013     | The column value is null or the column type is incompatible. |
2727
2728**示例:**
2729
2730  ```js
2731const id = resultSet.getColumnName(0);
2732const name = resultSet.getColumnName(1);
2733const age = resultSet.getColumnName(2);
2734  ```
2735
2736### goTo
2737
2738goTo(offset:number): boolean
2739
2740向前或向后转至结果集的指定行,相对于其当前位置偏移。
2741
2742**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2743
2744**参数:**
2745
2746| 参数名 | 类型   | 必填 | 说明                         |
2747| ------ | ------ | ---- | ---------------------------- |
2748| offset | number | 是   | 表示相对于当前位置的偏移量。 |
2749
2750**返回值:**
2751
2752| 类型    | 说明                                          |
2753| ------- | --------------------------------------------- |
2754| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2755
2756**错误码:**
2757
2758以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2759
2760| **错误码ID** | **错误信息**                                                 |
2761| ------------ | ------------------------------------------------------------ |
2762| 14800012     | The result set is  empty or the specified location is invalid. |
2763
2764**示例:**
2765
2766  ```js
2767let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2768let promise= store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2769promise.then((resultSet) => {
2770  resultSet.goTo(1);
2771  resultSet.close();
2772}).catch((err) => {
2773  console.error(`query failed, err: ${err}`);
2774});
2775  ```
2776
2777### goToRow
2778
2779goToRow(position: number): boolean
2780
2781转到结果集的指定行。
2782
2783**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2784
2785**参数:**
2786
2787| 参数名   | 类型   | 必填 | 说明                     |
2788| -------- | ------ | ---- | ------------------------ |
2789| position | number | 是   | 表示要移动到的指定位置。 |
2790
2791**返回值:**
2792
2793| 类型    | 说明                                          |
2794| ------- | --------------------------------------------- |
2795| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2796
2797**错误码:**
2798
2799以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2800
2801| **错误码ID** | **错误信息**                                                 |
2802| ------------ | ------------------------------------------------------------ |
2803| 14800012     | The result set is  empty or the specified location is invalid. |
2804
2805**示例:**
2806
2807  ```js
2808let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2809let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2810promise.then((resultSet) => {
2811  resultSet.goToRow(5);
2812  resultSet.close();
2813}).catch((err) => {
2814  console.error(`query failed, err: ${err}`);
2815});
2816  ```
2817
2818### goToFirstRow
2819
2820goToFirstRow(): boolean
2821
2822
2823转到结果集的第一行。
2824
2825**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2826
2827**返回值:**
2828
2829| 类型    | 说明                                          |
2830| ------- | --------------------------------------------- |
2831| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2832
2833**错误码:**
2834
2835以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2836
2837| **错误码ID** | **错误信息**                                                 |
2838| ------------ | ------------------------------------------------------------ |
2839| 14800012     | The result set is  empty or the specified location is invalid. |
2840
2841**示例:**
2842
2843  ```js
2844let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2845let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2846promise.then((resultSet) => {
2847  resultSet.goToFirstRow();
2848  resultSet.close();
2849}).catch((err) => {
2850  console.error(`query failed, err: ${err}`);
2851});
2852  ```
2853
2854### goToLastRow
2855
2856goToLastRow(): boolean
2857
2858转到结果集的最后一行。
2859
2860**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2861
2862**返回值:**
2863
2864| 类型    | 说明                                          |
2865| ------- | --------------------------------------------- |
2866| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2867
2868**错误码:**
2869
2870以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2871
2872| **错误码ID** | **错误信息**                                                 |
2873| ------------ | ------------------------------------------------------------ |
2874| 14800012     | The result set is  empty or the specified location is invalid. |
2875
2876**示例:**
2877
2878  ```js
2879let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2880let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2881promise.then((resultSet) => {
2882  resultSet.goToLastRow();
2883  resultSet.close();
2884}).catch((err) => {
2885  console.error(`query failed, err: ${err}`);
2886});
2887  ```
2888
2889### goToNextRow
2890
2891goToNextRow(): boolean
2892
2893转到结果集的下一行。
2894
2895**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2896
2897**返回值:**
2898
2899| 类型    | 说明                                          |
2900| ------- | --------------------------------------------- |
2901| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2902
2903**错误码:**
2904
2905以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2906
2907| **错误码ID** | **错误信息**                                                 |
2908| ------------ | ------------------------------------------------------------ |
2909| 14800012     | The result set is  empty or the specified location is invalid. |
2910
2911**示例:**
2912
2913  ```js
2914let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2915let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2916promise.then((resultSet) => {
2917  resultSet.goToNextRow();
2918  resultSet.close();
2919}).catch((err) => {
2920  console.error(`query failed, err: ${err}`);
2921});
2922  ```
2923
2924### goToPreviousRow
2925
2926goToPreviousRow(): boolean
2927
2928转到结果集的上一行。
2929
2930**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2931
2932**返回值:**
2933
2934| 类型    | 说明                                          |
2935| ------- | --------------------------------------------- |
2936| boolean | 如果成功移动结果集,则为true;否则返回false。 |
2937
2938**错误码:**
2939
2940以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2941
2942| **错误码ID** | **错误信息**                                                 |
2943| ------------ | ------------------------------------------------------------ |
2944| 14800012     | The result set is  empty or the specified location is invalid. |
2945
2946**示例:**
2947
2948  ```js
2949let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
2950let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2951promise.then((resultSet) => {
2952  resultSet.goToPreviousRow();
2953  resultSet.close();
2954}).catch((err) => {
2955  console.error(`query failed, err: ${err}`);
2956});
2957  ```
2958
2959### getBlob
2960
2961getBlob(columnIndex: number): Uint8Array
2962
2963以字节数组的形式获取当前行中指定列的值。
2964
2965**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
2966
2967**参数:**
2968
2969| 参数名      | 类型   | 必填 | 说明                    |
2970| ----------- | ------ | ---- | ----------------------- |
2971| columnIndex | number | 是   | 指定的列索引,从0开始。 |
2972
2973**返回值:**
2974
2975| 类型       | 说明                             |
2976| ---------- | -------------------------------- |
2977| Uint8Array | 以字节数组的形式返回指定列的值。 |
2978
2979**错误码:**
2980
2981以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
2982
2983| **错误码ID** | **错误信息**                                                 |
2984| ------------ | ------------------------------------------------------------ |
2985| 14800013     | The column value is null or the column type is incompatible. |
2986
2987**示例:**
2988
2989  ```js
2990const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES"));
2991  ```
2992
2993### getString
2994
2995getString(columnIndex: number): string
2996
2997以字符串形式获取当前行中指定列的值。
2998
2999**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
3000
3001**参数:**
3002
3003| 参数名      | 类型   | 必填 | 说明                    |
3004| ----------- | ------ | ---- | ----------------------- |
3005| columnIndex | number | 是   | 指定的列索引,从0开始。 |
3006
3007**返回值:**
3008
3009| 类型   | 说明                         |
3010| ------ | ---------------------------- |
3011| string | 以字符串形式返回指定列的值。 |
3012
3013**错误码:**
3014
3015以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
3016
3017| **错误码ID** | **错误信息**                                                 |
3018| ------------ | ------------------------------------------------------------ |
3019| 14800013     | The column value is null or the column type is incompatible. |
3020
3021**示例:**
3022
3023  ```js
3024const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
3025  ```
3026
3027### getLong
3028
3029getLong(columnIndex: number): number
3030
3031以Long形式获取当前行中指定列的值。
3032
3033**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
3034
3035**参数:**
3036
3037| 参数名      | 类型   | 必填 | 说明                    |
3038| ----------- | ------ | ---- | ----------------------- |
3039| columnIndex | number | 是   | 指定的列索引,从0开始。 |
3040
3041**返回值:**
3042
3043| 类型   | 说明                                                         |
3044| ------ | ------------------------------------------------------------ |
3045| number | 以Long形式返回指定列的值。<br>该接口支持的数据范围是:Number.MIN_SAFE_INTEGER ~ Number.MAX_SAFE_INTEGER,若超出该范围,建议使用[getDouble](#getdouble)。 |
3046
3047**错误码:**
3048
3049以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
3050
3051| **错误码ID** | **错误信息**                                                 |
3052| ------------ | ------------------------------------------------------------ |
3053| 14800013     | The column value is null or the column type is incompatible. |
3054
3055**示例:**
3056
3057  ```js
3058const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
3059  ```
3060
3061### getDouble
3062
3063getDouble(columnIndex: number): number
3064
3065以double形式获取当前行中指定列的值。
3066
3067**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
3068
3069**参数:**
3070
3071| 参数名      | 类型   | 必填 | 说明                    |
3072| ----------- | ------ | ---- | ----------------------- |
3073| columnIndex | number | 是   | 指定的列索引,从0开始。 |
3074
3075**返回值:**
3076
3077| 类型   | 说明                         |
3078| ------ | ---------------------------- |
3079| number | 以double形式返回指定列的值。 |
3080
3081**错误码:**
3082
3083以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
3084
3085| **错误码ID** | **错误信息**                                                 |
3086| ------------ | ------------------------------------------------------------ |
3087| 14800013     | The column value is null or the column type is incompatible. |
3088
3089**示例:**
3090
3091  ```js
3092const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
3093  ```
3094
3095### isColumnNull
3096
3097isColumnNull(columnIndex: number): boolean
3098
3099检查当前行中指定列的值是否为null。
3100
3101**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
3102
3103**参数:**
3104
3105| 参数名      | 类型   | 必填 | 说明                    |
3106| ----------- | ------ | ---- | ----------------------- |
3107| columnIndex | number | 是   | 指定的列索引,从0开始。 |
3108
3109**返回值:**
3110
3111| 类型    | 说明                                                      |
3112| ------- | --------------------------------------------------------- |
3113| boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 |
3114
3115**错误码:**
3116
3117以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
3118
3119| **错误码ID** | **错误信息**                                                 |
3120| ------------ | ------------------------------------------------------------ |
3121| 14800013     | The column value is null or the column type is incompatible. |
3122
3123**示例:**
3124
3125  ```js
3126const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES"));
3127  ```
3128
3129### close
3130
3131close(): void
3132
3133关闭结果集。
3134
3135**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
3136
3137**示例:**
3138
3139  ```js
3140let predicatesClose = new relationalStore.RdbPredicates("EMPLOYEE");
3141let promiseClose = store.query(predicatesClose, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3142promiseClose.then((resultSet) => {
3143  resultSet.close();
3144}).catch((err) => {
3145  console.error(`resultset close failed, err: ${err}`);
3146});
3147  ```
3148
3149**错误码:**
3150
3151以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)。
3152
3153| **错误码ID** | **错误信息**                                                 |
3154| ------------ | ------------------------------------------------------------ |
3155| 14800012     | The result set is  empty or the specified location is invalid. |
3156