js-apis-data-relationalStore.md 132.4 KB
Newer Older
1 2
# @ohos.data.relationalStore (关系型数据库)

L
worker  
lihuihui 已提交
3
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Worker线程。
4 5 6

该模块提供以下关系型数据库相关的常用功能:

7 8
- [RdbPredicates](#rdbpredicates): 数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。
L
LiRui 已提交
9
- [ResultSet](#resultset):提供用户调用关系型数据库查询接口之后返回的结果集合。
10 11 12 13 14 15 16 17

> **说明:**
> 
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

```js
18
import relationalStore from '@ohos.data.relationalStore'
19 20
```

21
## relationalStore.getRdbStore
22

23
getRdbStore(context: Context, config: StoreConfig, callback: AsyncCallback<RdbStore>): void
24 25 26 27 28 29 30 31 32

获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                           | 必填 | 说明                                                         |
| -------- | ---------------------------------------------- | ---- | ------------------------------------------------------------ |
W
wangxiyue 已提交
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 40

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
41 42 43 44 45
| **错误码ID** | **错误信息**                                                |
| ------------ | ----------------------------------------------------------- |
| 14800010     | Failed to open or delete database by invalid database path. |
| 14800011     | Failed to open database by database corrupted.              |
| 14800000     | Inner error.                                                |
46 47 48 49 50 51

**示例:**

FA模型示例:

```js
52

53
import featureAbility from '@ohos.ability.featureAbility'
54

55 56
var store;

57
// 获取context
58
let context = featureAbility.getContext();
59 60

const STORE_CONFIG = {
61 62 63 64 65 66 67
  name: "RdbTest.db",
  securityLevel: relationalStore.SecurityLevel.S1
};

relationalStore.getRdbStore(context, STORE_CONFIG, function (err, rdbStore) {
  store = rdbStore;
  if (err) {
G
ge-yafang 已提交
68
    console.error(`Get RdbStore failed, code is ${err.code},message is ${err.message}`);
69 70 71
    return;
  }
  console.info(`Get RdbStore successfully.`);
72 73 74 75 76 77
})
```

Stage模型示例:

```ts
78
import UIAbility from '@ohos.app.ability.UIAbility'
79 80

class EntryAbility extends UIAbility {
81 82 83 84 85 86
  onWindowStageCreate(windowStage) {
    var store;
    const STORE_CONFIG = {
      name: "RdbTest.db",
      securityLevel: relationalStore.SecurityLevel.S1
    };
87
        
88 89 90
    relationalStore.getRdbStore(this.context, STORE_CONFIG, function (err, rdbStore) {
      store = rdbStore;
      if (err) {
G
ge-yafang 已提交
91
        console.error(`Get RdbStore failed, code is ${err.code},message is ${err.message}`);
92 93 94 95 96
        return;
      }
      console.info(`Get RdbStore successfully.`);
    })
  }
97 98 99
}
```

100
## relationalStore.getRdbStore
101

102
getRdbStore(context: Context, config: StoreConfig): Promise&lt;RdbStore&gt;
103 104 105 106 107 108 109 110 111

获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名  | 类型                             | 必填 | 说明                                                         |
| ------- | -------------------------------- | ---- | ------------------------------------------------------------ |
W
wangxiyue 已提交
112
| context | Context                          | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
113 114 115 116 117 118
| config  | [StoreConfig](#storeconfig) | 是   | 与此RDB存储相关的数据库配置。                                |

**返回值**

| 类型                                      | 说明                              |
| ----------------------------------------- | --------------------------------- |
119
| Promise&lt;[RdbStore](#rdbstore)&gt; | Promise对象。返回RdbStore对象。 |
120 121 122 123 124

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
125 126 127 128 129
| **错误码ID** | **错误信息**                                                |
| ------------ | ----------------------------------------------------------- |
| 14800010     | Failed to open or delete database by invalid database path. |
| 14800011     | Failed to open database by database corrupted.              |
| 14800000     | Inner error.                                                |
130 131 132 133 134 135 136

**示例:**

FA模型示例:

```js
import featureAbility from '@ohos.ability.featureAbility'
137

138 139
var store;

140
// 获取context
141
let context = featureAbility.getContext();
142 143

const STORE_CONFIG = {
144 145 146
  name: "RdbTest.db",
  securityLevel: relationalStore.SecurityLevel.S1
};
147

148
let promise = relationalStore.getRdbStore(context, STORE_CONFIG);
149
promise.then(async (rdbStore) => {
150 151
  store = rdbStore;
  console.info(`Get RdbStore successfully.`);
152
}).catch((err) => {
G
ge-yafang 已提交
153
  console.error(`Get RdbStore failed, code is ${err.code},message is ${err.message}`);
154 155 156 157 158 159
})
```

Stage模型示例:

```ts
160
import UIAbility from '@ohos.app.ability.UIAbility'
161 162

class EntryAbility extends UIAbility {
163 164 165 166 167 168
  onWindowStageCreate(windowStage) {
    var store;
    const STORE_CONFIG = {
      name: "RdbTest.db",
      securityLevel: relationalStore.SecurityLevel.S1
    };
169
        
170 171 172 173 174
    let promise = relationalStore.getRdbStore(this.context, STORE_CONFIG);
    promise.then(async (rdbStore) => {
      store = rdbStore;
      console.info(`Get RdbStore successfully.`)
    }).catch((err) => {
G
ge-yafang 已提交
175
      console.error(`Get RdbStore failed, code is ${err.code},message is ${err.message}`);
176 177
    })
  }
178 179 180
}
```

181
## relationalStore.deleteRdbStore
182 183 184 185 186 187 188 189 190 191 192

deleteRdbStore(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void

删除数据库,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                      | 必填 | 说明                                                         |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
W
wangxiyue 已提交
193
| context  | Context                   | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
194 195 196 197 198 199 200
| name     | string                    | 是   | 数据库名称。                                                 |
| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。                                       |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
201 202 203 204
| **错误码ID** | **错误信息**                                                |
| ------------ | ----------------------------------------------------------- |
| 14800010     | Failed to open or delete database by invalid database path. |
| 14800000     | Inner error.                                                |
205 206 207 208 209 210 211

**示例:**

FA模型示例:

```js
import featureAbility from '@ohos.ability.featureAbility'
212 213

// 获取context
214 215
let context = featureAbility.getContext()

216 217
relationalStore.deleteRdbStore(context, "RdbTest.db", function (err) {
  if (err) {
L
delete  
lihuihui 已提交
218
    console.error(`Delete RdbStore failed, code is ${err.code},message is ${err.message}`);
219 220 221
    return;
  }
  console.info(`Delete RdbStore successfully.`);
222 223 224 225 226 227
})
```

Stage模型示例:

```ts
228
import UIAbility from '@ohos.app.ability.UIAbility'
229 230

class EntryAbility extends UIAbility {
231 232 233
  onWindowStageCreate(windowStage){
    relationalStore.deleteRdbStore(this.context, "RdbTest.db", function (err) {
      if (err) {
L
delete  
lihuihui 已提交
234
        console.error(`Delete RdbStore failed, code is ${err.code},message is ${err.message}`);
235 236 237 238 239
        return;
      }
      console.info(`Delete RdbStore successfully.`);
    })
  }
240 241 242
}
```

243
## relationalStore.deleteRdbStore
244 245 246 247 248 249 250 251 252 253 254

deleteRdbStore(context: Context, name: string): Promise&lt;void&gt;

使用指定的数据库文件配置删除数据库,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数**

| 参数名  | 类型    | 必填 | 说明                                                         |
| ------- | ------- | ---- | ------------------------------------------------------------ |
W
wangxiyue 已提交
255
| context | Context | 是   | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 |
256 257 258 259 260 261 262 263 264 265 266 267
| name    | string  | 是   | 数据库名称。                                                 |

**返回值**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
268 269 270 271
| **错误码ID** | **错误信息**                                                |
| ------------ | ----------------------------------------------------------- |
| 14800010     | Failed to open or delete database by invalid database path. |
| 14800000     | Inner error.                                                |
272 273 274 275 276 277 278

**示例:**

FA模型示例:

```js
import featureAbility from '@ohos.ability.featureAbility'
279 280

// 获取context
281
let context = featureAbility.getContext();
282

283
let promise = relationalStore.deleteRdbStore(context, "RdbTest.db");
284
promise.then(()=>{
285
  console.info(`Delete RdbStore successfully.`);
286
}).catch((err) => {
L
delete  
lihuihui 已提交
287
  console.error(`Delete RdbStore failed, code is ${err.code},message is ${err.message}`);
288 289 290 291 292 293
})
```

Stage模型示例:

```ts
294
import UIAbility from '@ohos.app.ability.UIAbility'
295 296

class EntryAbility extends UIAbility {
297 298 299 300 301
  onWindowStageCreate(windowStage){
    let promise = relationalStore.deleteRdbStore(this.context, "RdbTest.db");
    promise.then(()=>{
      console.info(`Delete RdbStore successfully.`);
    }).catch((err) => {
L
delete  
lihuihui 已提交
302
      console.error(`Delete RdbStore failed, code is ${err.code},message is ${err.message}`);
303 304
    })
  }
305 306 307
}
```

308
## StoreConfig
309 310 311 312 313 314 315 316

管理关系数据库配置。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称        | 类型          | 必填 | 说明                                                      |
| ------------- | ------------- | ---- | --------------------------------------------------------- |
| name          | string        | 是   | 数据库文件名。                                            |
P
PaDaBoo 已提交
317
| securityLevel | [SecurityLevel](#securitylevel) | 是   | 设置数据库安全级别                                        |
L
delete  
lihuihui 已提交
318
| encrypt       | boolean       | 否   | 指定数据库是否加密,默认不加密。<br/> true:加密。<br/> false:非加密。 |
319

320
## SecurityLevel
321 322 323

数据库的安全级别枚举。

L
lihuihui 已提交
324 325
> **说明:**
>
L
query  
lihuihui 已提交
326
> 若需要进行同步操作,数据库安全等级应不高于对端设备安全等级,具体可见[跨设备同步访问控制机制](../../database/sync-app-data-across-devices-overview.md#跨设备同步访问控制机制)。
L
lihuihui 已提交
327

328 329 330 331 332 333 334 335 336
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称 | 值   | 说明                                                         |
| ---- | ---- | ------------------------------------------------------------ |
| S1   | 1    | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 |
| S2   | 2    | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 |
| S3   | 3    | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 |
| S4   | 4    | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 |

337
## ValueType
338 339 340 341 342 343 344 345 346 347 348

用于表示允许的数据字段类型。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 类型    | 说明                 |
| ------- | -------------------- |
| number  | 表示值类型为数字。   |
| string  | 表示值类型为字符。   |
| boolean | 表示值类型为布尔值。 |

349
## ValuesBucket
350

W
wangdengze 已提交
351
用于存储键值对的类型。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。
352 353 354 355 356 357 358

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 键类型 | 值类型                                                      |
| ------ | ----------------------------------------------------------- |
| string | [ValueType](#valuetype)\|&nbsp;Uint8Array&nbsp;\|&nbsp;null |

359
## SyncMode
360 361 362

指数据库同步模式。

P
PaDaBoo 已提交
363
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
364 365 366 367 368 369

| 名称           | 值   | 说明                               |
| -------------- | ---- | ---------------------------------- |
| SYNC_MODE_PUSH | 0    | 表示数据从本地设备推送到远程设备。 |
| SYNC_MODE_PULL | 1    | 表示数据从远程设备拉至本地设备。   |

370
## SubscribeType
371 372 373 374 375 376 377 378 379 380 381

描述订阅类型。

**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称                  | 值   | 说明               |
| --------------------- | ---- | ------------------ |
| SUBSCRIBE_TYPE_REMOTE | 0    | 订阅远程数据更改。 |

L
lihuihui 已提交
382 383 384 385 386 387 388 389
## ConflictResolution<sup>10+</sup>

插入和修改接口的冲突解决方式。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称                 | 值   | 说明                                                         |
| -------------------- | ---- | ------------------------------------------------------------ |
P
PaDaBoo 已提交
390
| ON_CONFLICT_NONE | 0 | 表示当冲突发生时,不做任何处理。 |
L
lihuihui 已提交
391 392 393 394 395 396
| ON_CONFLICT_ROLLBACK | 1    | 表示当冲突发生时,中止SQL语句并回滚当前事务。                |
| ON_CONFLICT_ABORT    | 2    | 表示当冲突发生时,中止当前SQL语句,并撤销当前 SQL 语句所做的任何更改,但是由同一事务中先前的 SQL 语句引起的更改被保留并且事务保持活动状态。 |
| ON_CONFLICT_FAIL     | 3    | 表示当冲突发生时,中止当前 SQL 语句。但它不会撤销失败的 SQL 语句的先前更改,也不会结束事务。 |
| ON_CONFLICT_IGNORE   | 4    | 表示当冲突发生时,跳过包含违反约束的行并继续处理 SQL 语句的后续行。 |
| ON_CONFLICT_REPLACE  | 5    | 表示当冲突发生时,在插入或更新当前行之前删除导致约束违例的预先存在的行,并且命令会继续正常执行。 |

397
## RdbPredicates
398

W
wangdengze 已提交
399
表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。
400

401
### constructor
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417

constructor(name: string)

构造函数。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| name   | string | 是   | 数据库表名。 |

**示例:**

```js
418
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
419 420
```

421
### inDevices
422 423 424 425 426

inDevices(devices: Array&lt;string&gt;): RdbPredicates

同步分布式数据库时连接到组网内指定的远程设备。

L
device  
lihuihui 已提交
427 428 429 430
> **说明:**
>
> 其中devices通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。

431 432 433 434 435 436 437 438 439 440 441 442
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名  | 类型                | 必填 | 说明                       |
| ------- | ------------------- | ---- | -------------------------- |
| devices | Array&lt;string&gt; | 是   | 指定的组网内的远程设备ID。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
443
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
444 445 446 447

**示例:**

```js
L
device  
lihuihui 已提交
448 449
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
450
let deviceIds = [];
L
device  
lihuihui 已提交
451 452 453 454 455 456 457 458 459 460 461 462 463

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
    for (var i = 0; i < devices.length; i++) {
        deviceIds[i] = devices[i].deviceId;
    }
})
                                  
464
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
L
device  
lihuihui 已提交
465
predicates.inDevices(deviceIds);
466 467
```

468
### inAllDevices
469 470 471 472 473 474 475 476 477 478 479 480

inAllDevices(): RdbPredicates


同步分布式数据库时连接到组网内所有的远程设备。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
481
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
482 483 484 485

**示例:**

```js
486 487
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.inAllDevices();
488 489
```

490
### equalTo
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509

equalTo(field: string, value: ValueType): RdbPredicates


配置谓词以匹配数据字段为ValueType且值等于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
510
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
511 512 513 514

**示例:**

```js
515 516
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "lisi");
517 518 519
```


520
### notEqualTo
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539

notEqualTo(field: string, value: ValueType): RdbPredicates


配置谓词以匹配数据字段为ValueType且值不等于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
540
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
541 542 543 544

**示例:**

```js
545 546
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.notEqualTo("NAME", "lisi");
547 548 549
```


550
### beginWrap
551 552 553 554 555 556 557 558 559 560 561 562

beginWrap(): RdbPredicates


向谓词添加左括号。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                      |
| ------------------------------------ | ------------------------- |
563
| [RdbPredicates](#rdbpredicates) | 返回带有左括号的Rdb谓词。 |
564 565 566 567

**示例:**

```js
568
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
569 570 571 572 573 574 575 576
predicates.equalTo("NAME", "lisi")
    .beginWrap()
    .equalTo("AGE", 18)
    .or()
    .equalTo("SALARY", 200.5)
    .endWrap()
```

577
### endWrap
578 579 580 581 582 583 584 585 586 587 588

endWrap(): RdbPredicates

向谓词添加右括号。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                      |
| ------------------------------------ | ------------------------- |
589
| [RdbPredicates](#rdbpredicates) | 返回带有右括号的Rdb谓词。 |
590 591 592 593

**示例:**

```js
594
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
595 596 597 598 599 600 601 602
predicates.equalTo("NAME", "lisi")
    .beginWrap()
    .equalTo("AGE", 18)
    .or()
    .equalTo("SALARY", 200.5)
    .endWrap()
```

603
### or
604 605 606 607 608 609 610 611 612 613 614

or(): RdbPredicates

将或条件添加到谓词中。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                      |
| ------------------------------------ | ------------------------- |
615
| [RdbPredicates](#rdbpredicates) | 返回带有或条件的Rdb谓词。 |
616 617 618 619

**示例:**

```js
620
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
621 622 623 624 625
predicates.equalTo("NAME", "Lisa")
    .or()
    .equalTo("NAME", "Rose")
```

626
### and
627 628 629 630 631 632 633 634 635 636 637

and(): RdbPredicates

向谓词添加和条件。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                      |
| ------------------------------------ | ------------------------- |
638
| [RdbPredicates](#rdbpredicates) | 返回带有和条件的Rdb谓词。 |
639 640 641 642

**示例:**

```js
643
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
644 645 646 647 648
predicates.equalTo("NAME", "Lisa")
    .and()
    .equalTo("SALARY", 200.5)
```

649
### contains
650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667

contains(field: string, value: string): RdbPredicates

配置谓词以匹配数据字段为string且value包含指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| field  | string | 是   | 数据库表中的列名。     |
| value  | string | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
668
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
669 670 671 672

**示例:**

```js
673 674
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.contains("NAME", "os");
675 676
```

677
### beginsWith
678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695

beginsWith(field: string, value: string): RdbPredicates

配置谓词以匹配数据字段为string且值以指定字符串开头的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| field  | string | 是   | 数据库表中的列名。     |
| value  | string | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
696
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
697 698 699 700

**示例:**

```js
701 702
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.beginsWith("NAME", "os");
703 704
```

705
### endsWith
706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723

endsWith(field: string, value: string): RdbPredicates

配置谓词以匹配数据字段为string且值以指定字符串结尾的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| field  | string | 是   | 数据库表中的列名。     |
| value  | string | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
724
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
725 726 727 728

**示例:**

```js
729 730
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.endsWith("NAME", "se");
731 732
```

733
### isNull
734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750

isNull(field: string): RdbPredicates

配置谓词以匹配值为null的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| field  | string | 是   | 数据库表中的列名。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
751
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
752 753 754 755

**示例**

```js
756 757
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.isNull("NAME");
758 759
```

760
### isNotNull
761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777

isNotNull(field: string): RdbPredicates

配置谓词以匹配值不为null的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| field  | string | 是   | 数据库表中的列名。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
778
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
779 780 781 782

**示例:**

```js
783 784
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.isNotNull("NAME");
785 786
```

787
### like
788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805

like(field: string, value: string): RdbPredicates

配置谓词以匹配数据字段为string且值类似于指定字符串的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                   |
| ------ | ------ | ---- | ---------------------- |
| field  | string | 是   | 数据库表中的列名。     |
| value  | string | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
806
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
807 808 809 810

**示例:**

```js
811 812
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.like("NAME", "%os%");
813 814
```

815
### glob
816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833

glob(field: string, value: string): RdbPredicates

配置RdbPredicates匹配数据字段为string的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                                                         |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| field  | string | 是   | 数据库表中的列名。                                           |
| value  | string | 是   | 指示要与谓词匹配的值。<br>支持通配符,*表示0个、1个或多个数字或字符,?表示1个数字或字符。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
834
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
835 836 837 838

**示例:**

```js
839 840
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.glob("NAME", "?h*g");
841 842
```

843
### between
844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862

between(field: string, low: ValueType, high: ValueType): RdbPredicates

将谓词配置为匹配数据字段为ValueType且value在给定范围内的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                       |
| ------ | ----------------------- | ---- | -------------------------- |
| field  | string                  | 是   | 数据库表中的列名。         |
| low    | [ValueType](#valuetype) | 是   | 指示与谓词匹配的最小值。   |
| high   | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的最大值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
863
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
864 865 866 867

**示例:**

```js
868 869
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.between("AGE", 10, 50);
870 871
```

872
### notBetween
873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891

notBetween(field: string, low: ValueType, high: ValueType): RdbPredicates

配置RdbPredicates以匹配数据字段为ValueType且value超出给定范围的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                       |
| ------ | ----------------------- | ---- | -------------------------- |
| field  | string                  | 是   | 数据库表中的列名。         |
| low    | [ValueType](#valuetype) | 是   | 指示与谓词匹配的最小值。   |
| high   | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的最大值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
892
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
893 894 895 896

**示例:**

```js
897 898
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.notBetween("AGE", 10, 50);
899 900
```

901
### greaterThan
902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919

greaterThan(field: string, value: ValueType): RdbPredicates

配置谓词以匹配数据字段为ValueType且值大于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
920
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
921 922 923 924

**示例:**

```js
925 926
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.greaterThan("AGE", 18);
927 928
```

929
### lessThan
930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947

lessThan(field: string, value: ValueType): RdbPredicates

配置谓词以匹配数据字段为valueType且value小于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
948
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
949 950 951 952

**示例:**

```js
953 954
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.lessThan("AGE", 20);
955 956
```

957
### greaterThanOrEqualTo
958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975

greaterThanOrEqualTo(field: string, value: ValueType): RdbPredicates

配置谓词以匹配数据字段为ValueType且value大于或等于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
976
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
977 978 979 980

**示例:**

```js
981 982
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.greaterThanOrEqualTo("AGE", 18);
983 984
```

985
### lessThanOrEqualTo
986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003

lessThanOrEqualTo(field: string, value: ValueType): RdbPredicates

配置谓词以匹配数据字段为ValueType且value小于或等于指定值的字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                    | 必填 | 说明                   |
| ------ | ----------------------- | ---- | ---------------------- |
| field  | string                  | 是   | 数据库表中的列名。     |
| value  | [ValueType](#valuetype) | 是   | 指示要与谓词匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
1004
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1005 1006 1007 1008

**示例:**

```js
1009 1010
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.lessThanOrEqualTo("AGE", 20);
1011 1012
```

1013
### orderByAsc
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030

orderByAsc(field: string): RdbPredicates

配置谓词以匹配其值按升序排序的列。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| field  | string | 是   | 数据库表中的列名。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
1031
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1032 1033 1034 1035

**示例:**

```js
1036 1037
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.orderByAsc("NAME");
1038 1039
```

1040
### orderByDesc
1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057

orderByDesc(field: string): RdbPredicates

配置谓词以匹配其值按降序排序的列。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| field  | string | 是   | 数据库表中的列名。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
1058
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1059 1060 1061 1062

**示例:**

```js
1063 1064
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.orderByDesc("AGE");
1065 1066
```

1067
### distinct
1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078

distinct(): RdbPredicates

配置谓词以过滤重复记录并仅保留其中一个。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值**

| 类型                                 | 说明                           |
| ------------------------------------ | ------------------------------ |
1079
| [RdbPredicates](#rdbpredicates) | 返回可用于过滤重复记录的谓词。 |
1080 1081 1082 1083

**示例:**

```js
1084 1085
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Rose").distinct();
1086 1087
```

1088
### limitAs
1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105

limitAs(value: number): RdbPredicates

设置最大数据记录数的谓词。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| value  | number | 是   | 最大数据记录数。 |

**返回值**

| 类型                                 | 说明                                 |
| ------------------------------------ | ------------------------------------ |
1106
| [RdbPredicates](#rdbpredicates) | 返回可用于设置最大数据记录数的谓词。 |
1107 1108 1109 1110

**示例:**

```js
1111 1112
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Rose").limitAs(3);
1113 1114
```

1115
### offsetAs
1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132

offsetAs(rowOffset: number): RdbPredicates

配置RdbPredicates以指定返回结果的起始位置。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名    | 类型   | 必填 | 说明                               |
| --------- | ------ | ---- | ---------------------------------- |
| rowOffset | number | 是   | 返回结果的起始位置,取值为正整数。 |

**返回值**

| 类型                                 | 说明                                 |
| ------------------------------------ | ------------------------------------ |
1133
| [RdbPredicates](#rdbpredicates) | 返回具有指定返回结果起始位置的谓词。 |
1134 1135 1136 1137

**示例:**

```js
1138 1139
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Rose").offsetAs(3);
1140 1141
```

1142
### groupBy
1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159

groupBy(fields: Array&lt;string&gt;): RdbPredicates

配置RdbPredicates按指定列分组查询结果。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                | 必填 | 说明                 |
| ------ | ------------------- | ---- | -------------------- |
| fields | Array&lt;string&gt; | 是   | 指定分组依赖的列名。 |

**返回值**

| 类型                                 | 说明                   |
| ------------------------------------ | ---------------------- |
1160
| [RdbPredicates](#rdbpredicates) | 返回分组查询列的谓词。 |
1161 1162 1163 1164

**示例:**

```js
1165 1166
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.groupBy(["AGE", "NAME"]);
1167 1168
```

1169
### indexedBy
1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187

indexedBy(field: string): RdbPredicates

配置RdbPredicates以指定索引列。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明           |
| ------ | ------ | ---- | -------------- |
| field  | string | 是   | 索引列的名称。 |

**返回值**


| 类型                                 | 说明                                  |
| ------------------------------------ | ------------------------------------- |
1188
| [RdbPredicates](#rdbpredicates) | 返回具有指定索引列的RdbPredicates。 |
1189 1190 1191 1192

**示例:**

```js
1193 1194
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.indexedBy("SALARY_INDEX");
1195 1196
```

1197
### in
1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215

in(field: string, value: Array&lt;ValueType&gt;): RdbPredicates

配置RdbPredicates以匹配数据字段为ValueType数组且值在给定范围内的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                                 | 必填 | 说明                                    |
| ------ | ------------------------------------ | ---- | --------------------------------------- |
| field  | string                               | 是   | 数据库表中的列名。                      |
| value  | Array&lt;[ValueType](#valuetype)&gt; | 是   | 以ValueType型数组形式指定的要匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
1216
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1217 1218 1219 1220

**示例:**

```js
1221 1222
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.in("AGE", [18, 20]);
1223 1224
```

1225
### notIn
1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243

notIn(field: string, value: Array&lt;ValueType&gt;): RdbPredicates

将RdbPredicates配置为匹配数据字段为ValueType且值超出给定范围的指定字段。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                                 | 必填 | 说明                                  |
| ------ | ------------------------------------ | ---- | ------------------------------------- |
| field  | string                               | 是   | 数据库表中的列名。                    |
| value  | Array&lt;[ValueType](#valuetype)&gt; | 是   | 以ValueType数组形式指定的要匹配的值。 |

**返回值**

| 类型                                 | 说明                       |
| ------------------------------------ | -------------------------- |
1244
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
1245 1246 1247 1248

**示例:**

```js
1249 1250
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.notIn("NAME", ["Lisa", "Rose"]);
1251 1252
```

1253
## RdbStore
1254 1255 1256

提供管理关系数据库(RDB)方法的接口。

L
lihuihui 已提交
1257
在使用以下相关接口前,请使用[executeSql](#executesql)接口初始化数据库表结构和相关数据。
1258

1259
### 属性<sup>10+</sup>
L
leiiyb 已提交
1260 1261 1262 1263 1264

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称         | 类型            | 必填 | 说明                             |
| ------------ | ----------- | ---- | -------------------------------- |
1265 1266 1267 1268 1269 1270
| version<sup>10+</sup>  | number | 是   | 设置和获取数据库版本,值为大于0的正整数。       |

**示例:**

```js
// 设置数据库版本
1271
store.version = 3;
1272
// 获取数据库版本
1273
console.info(`RdbStore version is ${store.version}`);
1274
```
L
leiiyb 已提交
1275

1276
### insert
1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291

insert(table: string, values: ValuesBucket, callback: AsyncCallback&lt;number&gt;):void

向目标表中插入一行数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                          | 必填 | 说明                                                       |
| -------- | ----------------------------- | ---- | ---------------------------------------------------------- |
| table    | string                        | 是   | 指定的目标表名。                                           |
| values   | [ValuesBucket](#valuesbucket) | 是   | 表示要插入到表中的数据行。                                 |
| callback | AsyncCallback&lt;number&gt;   | 是   | 指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 |

1292 1293 1294 1295
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1296 1297 1298 1299
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1300

1301 1302 1303 1304
**示例:**

```js
const valueBucket = {
1305 1306 1307 1308 1309 1310 1311
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
store.insert("EMPLOYEE", valueBucket, function (err, rowId) {
  if (err) {
G
ge-yafang 已提交
1312
    console.error(`Insert is failed, code is ${err.code},message is ${err.message}`);
1313 1314 1315
    return;
  }
  console.info(`Insert is successful, rowId = ${rowId}`);
1316 1317 1318
})
```

L
lihuihui 已提交
1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332
### insert<sup>10+</sup>

insert(table: string, values: ValuesBucket,  conflict: ConflictResolution, callback: AsyncCallback&lt;number&gt;):void

向目标表中插入一行数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                        | 必填 | 说明                                                       |
| -------- | ------------------------------------------- | ---- | ---------------------------------------------------------- |
| table    | string                                      | 是   | 指定的目标表名。                                           |
| values   | [ValuesBucket](#valuesbucket)               | 是   | 表示要插入到表中的数据行。                                 |
P
PaDaBoo 已提交
1333
| conflict | [ConflictResolution](#conflictresolution10) | 是   | 指定冲突解决方式。                                         |
L
lihuihui 已提交
1334 1335
| callback | AsyncCallback&lt;number&gt;                 | 是   | 指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 |

1336 1337 1338 1339
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1340 1341 1342 1343
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1344

L
lihuihui 已提交
1345 1346 1347 1348
**示例:**

```js
const valueBucket = {
1349 1350 1351 1352 1353 1354 1355
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
store.insert("EMPLOYEE", valueBucket, relationalStore.ConflictResolution.ON_CONFLICT_REPLACE, function (err, rowId) {
  if (err) {
G
ge-yafang 已提交
1356
    console.error(`Insert is failed, code is ${err.code},message is ${err.message}`);
1357 1358 1359
    return;
  }
  console.info(`Insert is successful, rowId = ${rowId}`);
L
lihuihui 已提交
1360 1361 1362
})
```

1363
### insert
1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383

insert(table: string, values: ValuesBucket):Promise&lt;number&gt;

向目标表中插入一行数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                          | 必填 | 说明                       |
| ------ | ----------------------------- | ---- | -------------------------- |
| table  | string                        | 是   | 指定的目标表名。           |
| values | [ValuesBucket](#valuesbucket) | 是   | 表示要插入到表中的数据行。 |

**返回值**

| 类型                  | 说明                                              |
| --------------------- | ------------------------------------------------- |
| Promise&lt;number&gt; | Promise对象。如果操作成功,返回行ID;否则返回-1。 |

1384 1385 1386 1387
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1388 1389 1390 1391
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1392

1393 1394 1395 1396
**示例:**

```js
const valueBucket = {
1397 1398 1399 1400 1401 1402
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let promise = store.insert("EMPLOYEE", valueBucket);
1403
promise.then((rowId) => {
1404 1405
  console.info(`Insert is successful, rowId = ${rowId}`);
}).catch((err) => {
G
ge-yafang 已提交
1406
  console.error(`Insert is failed, code is ${err.code},message is ${err.message}`);
1407 1408 1409
})
```

L
lihuihui 已提交
1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423
### insert<sup>10+</sup>

insert(table: string, values: ValuesBucket,  conflict: ConflictResolution):Promise&lt;number&gt;

向目标表中插入一行数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                        | 必填 | 说明                       |
| -------- | ------------------------------------------- | ---- | -------------------------- |
| table    | string                                      | 是   | 指定的目标表名。           |
| values   | [ValuesBucket](#valuesbucket)               | 是   | 表示要插入到表中的数据行。 |
P
PaDaBoo 已提交
1424
| conflict | [ConflictResolution](#conflictresolution10) | 是   | 指定冲突解决方式。         |
L
lihuihui 已提交
1425 1426 1427 1428 1429 1430 1431

**返回值**

| 类型                  | 说明                                              |
| --------------------- | ------------------------------------------------- |
| Promise&lt;number&gt; | Promise对象。如果操作成功,返回行ID;否则返回-1。 |

1432 1433 1434 1435
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1436 1437 1438 1439
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1440

L
lihuihui 已提交
1441 1442 1443 1444
**示例:**

```js
const valueBucket = {
1445 1446 1447 1448 1449 1450
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let promise = store.insert("EMPLOYEE", valueBucket, relationalStore.ConflictResolution.ON_CONFLICT_REPLACE);
L
lihuihui 已提交
1451
promise.then((rowId) => {
1452 1453
  console.info(`Insert is successful, rowId = ${rowId}`);
}).catch((err) => {
G
ge-yafang 已提交
1454
  console.error(`Insert is failed, code is ${err.code},message is ${err.message}`);
L
lihuihui 已提交
1455 1456 1457
})
```

1458
### batchInsert
1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473

batchInsert(table: string, values: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;):void

向目标表中插入一组数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                       | 必填 | 说明                                                         |
| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
| table    | string                                     | 是   | 指定的目标表名。                                             |
| values   | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是   | 表示要插入到表中的一组数据。                                 |
| callback | AsyncCallback&lt;number&gt;                | 是   | 指定callback回调函数。如果操作成功,返回插入的数据个数,否则返回-1。 |

1474 1475 1476 1477
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1478 1479 1480 1481
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1482

1483 1484 1485 1486
**示例:**

```js
const valueBucket1 = {
1487 1488 1489 1490 1491
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5])
};
1492
const valueBucket2 = {
1493 1494 1495 1496 1497
  "NAME": "Jack",
  "AGE": 19,
  "SALARY": 101.5,
  "CODES": new Uint8Array([6, 7, 8, 9, 10])
};
1498
const valueBucket3 = {
1499 1500 1501 1502 1503
  "NAME": "Tom",
  "AGE": 20,
  "SALARY": 102.5,
  "CODES": new Uint8Array([11, 12, 13, 14, 15])
};
1504 1505

let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1506 1507
store.batchInsert("EMPLOYEE", valueBuckets, function(err, insertNum) {
  if (err) {
G
ge-yafang 已提交
1508
    console.error(`batchInsert is failed, code is ${err.code},message is ${err.message}`);
1509 1510 1511
    return;
  }
  console.info(`batchInsert is successful, the number of values that were inserted = ${insertNum}`);
1512 1513 1514
})
```

1515
### batchInsert
1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535

batchInsert(table: string, values: Array&lt;ValuesBucket&gt;):Promise&lt;number&gt;

向目标表中插入一组数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                                       | 必填 | 说明                         |
| ------ | ------------------------------------------ | ---- | ---------------------------- |
| table  | string                                     | 是   | 指定的目标表名。             |
| values | Array&lt;[ValuesBucket](#valuesbucket)&gt; | 是   | 表示要插入到表中的一组数据。 |

**返回值**

| 类型                  | 说明                                                        |
| --------------------- | ----------------------------------------------------------- |
| Promise&lt;number&gt; | Promise对象。如果操作成功,返回插入的数据个数,否则返回-1。 |

1536 1537 1538 1539
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1540 1541 1542 1543
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1544

1545 1546 1547 1548
**示例:**

```js
const valueBucket1 = {
1549 1550 1551 1552 1553
  "NAME": "Lisa",
  "AGE": 18,
  "SALARY": 100.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5])
};
1554
const valueBucket2 = {
1555 1556 1557 1558 1559
  "NAME": "Jack",
  "AGE": 19,
  "SALARY": 101.5,
  "CODES": new Uint8Array([6, 7, 8, 9, 10])
};
1560
const valueBucket3 = {
1561 1562 1563 1564 1565
  "NAME": "Tom",
  "AGE": 20,
  "SALARY": 102.5,
  "CODES": new Uint8Array([11, 12, 13, 14, 15])
};
1566 1567

let valueBuckets = new Array(valueBucket1, valueBucket2, valueBucket3);
1568
let promise = store.batchInsert("EMPLOYEE", valueBuckets);
1569
promise.then((insertNum) => {
1570 1571
  console.info(`batchInsert is successful, the number of values that were inserted = ${insertNum}`);
}).catch((err) => {
G
ge-yafang 已提交
1572
  console.error(`batchInsert is failed, code is ${err.code},message is ${err.message}`);
1573 1574 1575
})
```

1576
### update
1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588

update(values: ValuesBucket, predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void

根据RdbPredicates的指定实例对象更新数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                 | 必填 | 说明                                                         |
| ---------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| values     | [ValuesBucket](#valuesbucket)        | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1589
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的更新条件。                    |
1590 1591
| callback   | AsyncCallback&lt;number&gt;          | 是   | 指定的callback回调方法。返回受影响的行数。                   |

1592 1593 1594 1595
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1596 1597 1598 1599
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1600

1601 1602 1603 1604
**示例:**

```js
const valueBucket = {
1605 1606 1607 1608 1609 1610 1611 1612 1613
  "NAME": "Rose",
  "AGE": 22,
  "SALARY": 200.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
store.update(valueBucket, predicates, function (err, rows) {
  if (err) {
G
ge-yafang 已提交
1614
    console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
1615 1616 1617
    return;
  }
  console.info(`Updated row count: ${rows}`);
1618 1619 1620
})
```

L
lihuihui 已提交
1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633
### update<sup>10+</sup>

update(values: ValuesBucket, predicates: RdbPredicates, conflict: ConflictResolution, callback: AsyncCallback&lt;number&gt;):void

根据RdbPredicates的指定实例对象更新数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| values     | [ValuesBucket](#valuesbucket)               | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1634
| predicates | [RdbPredicates](#rdbpredicates)            | 是   | RdbPredicates的实例对象指定的更新条件。                      |
P
PaDaBoo 已提交
1635
| conflict   | [ConflictResolution](#conflictresolution10) | 是   | 指定冲突解决方式。                                           |
L
lihuihui 已提交
1636 1637
| callback   | AsyncCallback&lt;number&gt;                 | 是   | 指定的callback回调方法。返回受影响的行数。                   |

1638 1639 1640 1641
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1642 1643 1644 1645
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1646

L
lihuihui 已提交
1647 1648 1649 1650
**示例:**

```js
const valueBucket = {
1651 1652 1653 1654 1655 1656 1657 1658 1659
  "NAME": "Rose",
  "AGE": 22,
  "SALARY": 200.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
store.update(valueBucket, predicates, relationalStore.ConflictResolution.ON_CONFLICT_REPLACE, function (err, rows) {
  if (err) {
G
ge-yafang 已提交
1660
    console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
1661 1662 1663
    return;
  }
  console.info(`Updated row count: ${rows}`);
L
lihuihui 已提交
1664 1665 1666
})
```

1667
### update
1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679

update(values: ValuesBucket, predicates: RdbPredicates):Promise&lt;number&gt;

根据RdbPredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名       | 类型                                 | 必填 | 说明                                                         |
| ------------ | ------------------------------------ | ---- | ------------------------------------------------------------ |
| values       | [ValuesBucket](#valuesbucket)        | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1680
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的更新条件。                    |
1681 1682 1683 1684 1685 1686 1687

**返回值**

| 类型                  | 说明                                      |
| --------------------- | ----------------------------------------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |

1688 1689 1690 1691
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1692 1693 1694 1695
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1696

1697 1698 1699 1700
**示例:**

```js
const valueBucket = {
1701 1702 1703 1704 1705 1706 1707 1708
  "NAME": "Rose",
  "AGE": 22,
  "SALARY": 200.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
let promise = store.update(valueBucket, predicates);
P
PaDaBoo 已提交
1709
promise.then(async (rows) => {
1710
  console.info(`Updated row count: ${rows}`);
1711
}).catch((err) => {
G
ge-yafang 已提交
1712
  console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
1713 1714 1715
})
```

L
lihuihui 已提交
1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728
### update<sup>10+</sup>

update(values: ValuesBucket, predicates: RdbPredicates, conflict: ConflictResolution):Promise&lt;number&gt;

根据RdbPredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                        | 必填 | 说明                                                         |
| ---------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| values     | [ValuesBucket](#valuesbucket)               | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
1729
| predicates | [RdbPredicates](#rdbpredicates)            | 是   | RdbPredicates的实例对象指定的更新条件。                      |
P
PaDaBoo 已提交
1730
| conflict   | [ConflictResolution](#conflictresolution10) | 是   | 指定冲突解决方式。                                           |
L
lihuihui 已提交
1731 1732 1733 1734 1735 1736 1737

**返回值**

| 类型                  | 说明                                      |
| --------------------- | ----------------------------------------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |

1738 1739 1740 1741
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1742 1743 1744 1745
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1746

L
lihuihui 已提交
1747 1748 1749 1750
**示例:**

```js
const valueBucket = {
1751 1752 1753 1754 1755 1756 1757 1758
  "NAME": "Rose",
  "AGE": 22,
  "SALARY": 200.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
let promise = store.update(valueBucket, predicates, relationalStore.ConflictResolution.ON_CONFLICT_REPLACE);
P
PaDaBoo 已提交
1759
promise.then(async (rows) => {
1760
  console.info(`Updated row count: ${rows}`);
L
lihuihui 已提交
1761
}).catch((err) => {
G
ge-yafang 已提交
1762
  console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
L
lihuihui 已提交
1763 1764 1765
})
```

1766
### update
1767 1768 1769 1770 1771 1772 1773

update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void

根据DataSharePredicates的指定实例对象更新数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
1774 1775
**模型约束:** 此接口仅可在Stage模型下可用。

1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| table      | string                                                       | 是   | 指定的目标表名。                                             |
| values     | [ValuesBucket](#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |
| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定的callback回调方法。返回受影响的行数。                   |

1787 1788 1789 1790
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1791 1792 1793 1794
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1795

1796 1797 1798 1799 1800 1801 1802 1803 1804
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
const valueBucket = {
    "NAME": "Rose",
    "AGE": 22,
    "SALARY": 200.5,
    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
1805 1806 1807 1808 1809
};
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Lisa");
store.update("EMPLOYEE", valueBucket, predicates, function (err, rows) {
  if (err) {
G
ge-yafang 已提交
1810
    console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
1811 1812 1813
    return;
  }
  console.info(`Updated row count: ${rows}`);
1814 1815 1816
})
```

1817
### update
1818 1819 1820 1821 1822 1823 1824

update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;

根据DataSharePredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
1825 1826
**模型约束:** 此接口仅可在Stage模型下可用。

1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| table      | string                                                       | 是   | 指定的目标表名。                                             |
| values     | [ValuesBucket](#valuesbucket)                                | 是   | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的更新条件。                |

**返回值**

| 类型                  | 说明                                      |
| --------------------- | ----------------------------------------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |

1843 1844 1845 1846
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1847 1848 1849 1850
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1851

1852 1853 1854 1855 1856
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
const valueBucket = {
1857 1858 1859 1860 1861 1862 1863 1864
  "NAME": "Rose",
  "AGE": 22,
  "SALARY": 200.5,
  "CODES": new Uint8Array([1, 2, 3, 4, 5]),
};
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Lisa");
let promise = store.update("EMPLOYEE", valueBucket, predicates);
P
PaDaBoo 已提交
1865
promise.then(async (rows) => {
1866
  console.info(`Updated row count: ${rows}`);
1867
}).catch((err) => {
G
ge-yafang 已提交
1868
  console.error(`Updated failed, code is ${err.code},message is ${err.message}`);
1869 1870 1871
})
```

1872
### delete
1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883

delete(predicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void

根据RdbPredicates的指定实例对象从数据库中删除数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                 | 必填 | 说明                                      |
| ---------- | ------------------------------------ | ---- | ----------------------------------------- |
1884
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的删除条件。 |
1885 1886
| callback   | AsyncCallback&lt;number&gt;          | 是   | 指定callback回调函数。返回受影响的行数。  |

1887 1888 1889 1890
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1891 1892 1893 1894
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1895

1896 1897 1898
**示例:**

```js
1899 1900 1901 1902
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
store.delete(predicates, function (err, rows) {
  if (err) {
G
ge-yafang 已提交
1903
    console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
1904 1905 1906
    return;
  }
  console.info(`Delete rows: ${rows}`);
1907 1908 1909
})
```

1910
### delete
1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921

delete(predicates: RdbPredicates):Promise&lt;number&gt;

根据RdbPredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                 | 必填 | 说明                                      |
| ---------- | ------------------------------------ | ---- | ----------------------------------------- |
1922
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的删除条件。 |
1923 1924 1925 1926 1927 1928 1929

**返回值**

| 类型                  | 说明                            |
| --------------------- | ------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |

1930 1931 1932 1933
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1934 1935 1936 1937
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1938

1939 1940 1941
**示例:**

```js
1942 1943 1944
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Lisa");
let promise = store.delete(predicates);
1945
promise.then((rows) => {
1946
  console.info(`Delete rows: ${rows}`);
1947
}).catch((err) => {
G
ge-yafang 已提交
1948
  console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
1949 1950 1951
})
```

1952
### delete
1953 1954 1955 1956 1957 1958 1959

delete(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;):void

根据DataSharePredicates的指定实例对象从数据库中删除数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
1960 1961
**模型约束:** 此接口仅可在Stage模型下可用。

1962 1963 1964 1965 1966 1967 1968 1969 1970 1971
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                          |
| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
| table      | string                                                       | 是   | 指定的目标表名。                              |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |
| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 指定callback回调函数。返回受影响的行数。      |

1972 1973 1974 1975
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
1976 1977 1978 1979
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
1980

1981 1982 1983 1984
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
1985 1986 1987 1988
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Lisa");
store.delete("EMPLOYEE", predicates, function (err, rows) {
  if (err) {
G
ge-yafang 已提交
1989
    console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
1990 1991 1992
    return;
  }
  console.info(`Delete rows: ${rows}`);
1993 1994 1995
})
```

1996
### delete
1997 1998 1999 2000 2001 2002 2003

delete(table: string, predicates: dataSharePredicates.DataSharePredicates):Promise&lt;number&gt;

根据DataSharePredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
2004 2005
**模型约束:** 此接口仅可在Stage模型下可用。

2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                          |
| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- |
| table      | string                                                       | 是   | 指定的目标表名。                              |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的删除条件。 |

**返回值**

| 类型                  | 说明                            |
| --------------------- | ------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回受影响的行数。 |

2021 2022 2023 2024
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
2025 2026 2027 2028
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
2029

2030 2031 2032 2033
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
2034 2035 2036
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Lisa");
let promise = store.delete("EMPLOYEE", predicates);
2037
promise.then((rows) => {
2038
  console.info(`Delete rows: ${rows}`);
2039
}).catch((err) => {
G
ge-yafang 已提交
2040
  console.error(`Delete failed, code is ${err.code},message is ${err.message}`);
2041 2042 2043
})
```

2044
### query
2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055

query(predicates: RdbPredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void

根据指定条件查询数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                                        |
| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
2056
| predicates | [RdbPredicates](#rdbpredicates)                         | 是   | RdbPredicates的实例对象指定的查询条件。                   |
2057
| columns    | Array&lt;string&gt;                                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。            |
P
PaDaBoo 已提交
2058
| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
2059

L
LiRui 已提交
2060 2061 2062 2063 2064 2065 2066 2067
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2068 2069 2070
**示例:**

```js
2071 2072 2073 2074
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Rose");
store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], function (err, resultSet) {
  if (err) {
G
ge-yafang 已提交
2075
    console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2076 2077 2078 2079
    return;
  }
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2080 2081 2082
})
```

2083
### query
2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094

query(predicates: RdbPredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;

根据指定条件查询数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                 | 必填 | 说明                                             |
| ---------- | ------------------------------------ | ---- | ------------------------------------------------ |
2095
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象指定的查询条件。        |
2096 2097
| columns    | Array&lt;string&gt;                  | 否   | 表示要查询的列。如果值为空,则查询应用于所有列。 |

L
LiRui 已提交
2098 2099 2100 2101 2102 2103 2104 2105
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2106 2107 2108 2109
**返回值**

| 类型                                                    | 说明                                               |
| ------------------------------------------------------- | -------------------------------------------------- |
P
PaDaBoo 已提交
2110
| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
2111 2112 2113 2114

**示例:**

  ```js
2115 2116 2117
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
predicates.equalTo("NAME", "Rose");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2118
promise.then((resultSet) => {
2119 2120
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2121
}).catch((err) => {
G
ge-yafang 已提交
2122
  console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2123 2124 2125
})
  ```

2126
### query
2127 2128 2129 2130 2131 2132 2133

query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void

根据指定条件查询数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
2134 2135
**模型约束:** 此接口仅可在Stage模型下可用。

2136 2137 2138 2139 2140 2141 2142 2143 2144
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                                        |
| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- |
| table      | string                                                       | 是   | 指定的目标表名。                                            |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。               |
| columns    | Array&lt;string&gt;                                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。            |
P
PaDaBoo 已提交
2145
| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
2146

L
LiRui 已提交
2147 2148 2149 2150 2151 2152 2153 2154
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2155 2156 2157 2158
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
2159 2160 2161 2162
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Rose");
store.query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], function (err, resultSet) {
  if (err) {
G
ge-yafang 已提交
2163
    console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2164 2165 2166 2167
    return;
  }
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2168 2169 2170
})
```

2171
### query
2172 2173 2174 2175 2176 2177 2178

query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;

根据指定条件查询数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

G
ge-yafang 已提交
2179 2180
**模型约束:** 此接口仅可在Stage模型下可用。

2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194
**系统接口:** 此接口为系统接口。

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                                             |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------ |
| table      | string                                                       | 是   | 指定的目标表名。                                 |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | DataSharePredicates的实例对象指定的查询条件。    |
| columns    | Array&lt;string&gt;                                          | 否   | 表示要查询的列。如果值为空,则查询应用于所有列。 |

**返回值**

| 类型                                                    | 说明                                               |
| ------------------------------------------------------- | -------------------------------------------------- |
P
PaDaBoo 已提交
2195
| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
2196

L
LiRui 已提交
2197 2198 2199 2200 2201 2202 2203 2204
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2205 2206 2207 2208
**示例:**

```js
import dataSharePredicates from '@ohos.data.dataSharePredicates'
2209 2210 2211
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo("NAME", "Rose");
let promise = store.query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2212
promise.then((resultSet) => {
2213 2214
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2215
}).catch((err) => {
G
ge-yafang 已提交
2216
  console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2217 2218 2219
})
```

2220
### remoteQuery
2221 2222 2223 2224 2225

remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array&lt;string&gt; , callback: AsyncCallback&lt;ResultSet&gt;): void

根据指定条件查询远程设备数据库中的数据。使用callback异步回调。

L
devices  
lihuihui 已提交
2226 2227 2228 2229
> **说明:**
>
> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。

L
device  
lihuihui 已提交
2230 2231
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

2232 2233
**参数:**

L
device  
lihuihui 已提交
2234 2235 2236 2237 2238 2239
| 参数名     | 类型                                         | 必填 | 说明                                                      |
| ---------- | -------------------------------------------- | ---- | --------------------------------------------------------- |
| device     | string                                       | 是   | 指定的远程设备ID。                                        |
| table      | string                                       | 是   | 指定的目标表名。                                          |
| predicates | [RdbPredicates](#rdbpredicates)              | 是   | RdbPredicates的实例对象,指定查询的条件。                 |
| columns    | Array&lt;string&gt;                          | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。          |
P
PaDaBoo 已提交
2240
| callback   | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
2241

L
LiRui 已提交
2242 2243 2244 2245 2246 2247 2248 2249
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2250 2251 2252
**示例:**

```js
L
device  
lihuihui 已提交
2253 2254
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
2255
let deviceId = null;
L
device  
lihuihui 已提交
2256 2257 2258 2259 2260 2261 2262 2263

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
L
lihuihui 已提交
2264
    deviceId = devices[0].deviceId;
L
device  
lihuihui 已提交
2265 2266
})

2267 2268
let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
predicates.greaterThan("id", 0);
L
device  
lihuihui 已提交
2269
store.remoteQuery(deviceId, "EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"],
2270
  function(err, resultSet) {
2271
    if (err) {
G
ge-yafang 已提交
2272
      console.error(`Failed to remoteQuery, code is ${err.code},message is ${err.message}`);
2273
      return;
2274
    }
2275 2276 2277 2278
    console.info(`ResultSet column names: ${resultSet.columnNames}`);
    console.info(`ResultSet column count: ${resultSet.columnCount}`);
  }
)
2279 2280
```

2281
### remoteQuery
2282 2283 2284 2285 2286

remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array&lt;string&gt;): Promise&lt;ResultSet&gt;

根据指定条件查询远程设备数据库中的数据。使用Promise异步回调。

L
devices  
lihuihui 已提交
2287 2288 2289 2290
> **说明:**
>
> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。

L
device  
lihuihui 已提交
2291 2292
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

2293 2294 2295 2296
**参数:**

| 参数名     | 类型                                 | 必填 | 说明                                             |
| ---------- | ------------------------------------ | ---- | ------------------------------------------------ |
L
device  
lihuihui 已提交
2297
| device     | string                               | 是   | 指定的远程设备ID。                   |
2298
| table      | string                               | 是   | 指定的目标表名。                                 |
2299
| predicates | [RdbPredicates](#rdbpredicates) | 是   | RdbPredicates的实例对象,指定查询的条件。      |
2300 2301 2302 2303 2304 2305
| columns    | Array&lt;string&gt;                  | 是   | 表示要查询的列。如果值为空,则查询应用于所有列。 |

**返回值**

| 类型                                                         | 说明                                               |
| ------------------------------------------------------------ | -------------------------------------------------- |
P
PaDaBoo 已提交
2306
| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
2307

L
LiRui 已提交
2308 2309 2310 2311 2312 2313 2314 2315
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2316 2317 2318
**示例:**

```js
L
device  
lihuihui 已提交
2319 2320
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
2321
let deviceId = null;
L
device  
lihuihui 已提交
2322 2323 2324 2325 2326 2327 2328 2329

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
L
lihuihui 已提交
2330
    deviceId = devices[0].deviceId;
L
device  
lihuihui 已提交
2331 2332
})

2333 2334
let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
predicates.greaterThan("id", 0);
L
lihuihui 已提交
2335
let promise = store.remoteQuery(deviceId, "EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
2336
promise.then((resultSet) => {
2337 2338
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2339
}).catch((err) => {
G
ge-yafang 已提交
2340
  console.error(`Failed to remoteQuery, code is ${err.code},message is ${err.message}`);
2341 2342 2343
})
```

2344
### querySql
2345 2346 2347 2348 2349 2350 2351 2352 2353

querySql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void

根据指定SQL语句查询数据库中的数据,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

L
query  
lihuihui 已提交
2354 2355 2356
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| sql      | string                                       | 是   | 指定要执行的SQL语句。                                        |
L
lihuihui 已提交
2357
| bindArgs | Array&lt;[ValueType](#valuetype)&gt;         | 是   | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数需为空数组。 |
L
query  
lihuihui 已提交
2358
| callback | AsyncCallback&lt;[ResultSet](#resultset)&gt; | 是   | 指定callback回调函数。如果操作成功,则返回ResultSet对象。    |
2359

L
LiRui 已提交
2360 2361 2362 2363 2364 2365 2366 2367
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2368 2369 2370
**示例:**

```js
2371 2372
store.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo'], function (err, resultSet) {
  if (err) {
G
ge-yafang 已提交
2373
    console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2374 2375 2376 2377
    return;
  }
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2378 2379 2380
})
```

2381
### querySql
2382 2383 2384 2385 2386 2387 2388 2389 2390

querySql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt;

根据指定SQL语句查询数据库中的数据,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

L
query  
lihuihui 已提交
2391 2392 2393 2394
| 参数名   | 类型                                 | 必填 | 说明                                                         |
| -------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| sql      | string                               | 是   | 指定要执行的SQL语句。                                        |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否   | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数不填。 |
2395 2396 2397 2398 2399

**返回值**

| 类型                                                    | 说明                                               |
| ------------------------------------------------------- | -------------------------------------------------- |
P
PaDaBoo 已提交
2400
| Promise&lt;[ResultSet](#resultset)&gt; | Promise对象。如果操作成功,则返回ResultSet对象。 |
2401

L
LiRui 已提交
2402 2403 2404 2405 2406 2407 2408 2409
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2410 2411 2412
**示例:**

```js
L
RDB  
lihuihui 已提交
2413
let promise = store.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = 'sanguo'");
2414
promise.then((resultSet) => {
2415 2416
  console.info(`ResultSet column names: ${resultSet.columnNames}`);
  console.info(`ResultSet column count: ${resultSet.columnCount}`);
2417
}).catch((err) => {
G
ge-yafang 已提交
2418
  console.error(`Query failed, code is ${err.code},message is ${err.message}`);
2419 2420 2421
})
```

2422
### executeSql
2423 2424 2425 2426 2427 2428 2429 2430 2431

executeSql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;void&gt;):void

执行包含指定参数但不返回值的SQL语句,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

L
query  
lihuihui 已提交
2432 2433 2434
| 参数名   | 类型                                 | 必填 | 说明                                                         |
| -------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| sql      | string                               | 是   | 指定要执行的SQL语句。                                        |
L
lihuihui 已提交
2435
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是   | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数需为空数组。 |
L
query  
lihuihui 已提交
2436
| callback | AsyncCallback&lt;void&gt;            | 是   | 指定callback回调函数。                                       |
2437

2438 2439 2440 2441
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
2442 2443 2444 2445
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
2446

2447 2448 2449
**示例:**

```js
L
RDB  
lihuihui 已提交
2450 2451
const SQL_DELETE_TABLE = "DELETE FROM test WHERE name = ?"
store.executeSql(SQL_DELETE_TABLE, ['zhangsan'], function(err) {
2452
  if (err) {
G
ge-yafang 已提交
2453
    console.error(`ExecuteSql failed, code is ${err.code},message is ${err.message}`);
2454 2455
    return;
  }
L
RDB  
lihuihui 已提交
2456
  console.info(`Delete table done.`);
2457 2458 2459
})
```

2460
### executeSql
2461 2462 2463 2464 2465 2466 2467 2468 2469

executeSql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;void&gt;

执行包含指定参数但不返回值的SQL语句,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

L
query  
lihuihui 已提交
2470 2471 2472 2473
| 参数名   | 类型                                 | 必填 | 说明                                                         |
| -------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| sql      | string                               | 是   | 指定要执行的SQL语句。                                        |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否   | SQL语句中参数的值。该值与sql参数语句中的占位符相对应。当sql参数语句完整时,该参数不填。 |
2474 2475 2476 2477 2478 2479 2480

**返回值**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

2481 2482 2483 2484
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
2485 2486 2487 2488
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
2489

2490 2491 2492
**示例:**

```js
L
RDB  
lihuihui 已提交
2493 2494
const SQL_DELETE_TABLE = "DELETE FROM test WHERE name = 'zhangsan'"
let promise = store.executeSql(SQL_DELETE_TABLE);
2495
promise.then(() => {
L
RDB  
lihuihui 已提交
2496
    console.info(`Delete table done.`);
2497
}).catch((err) => {
G
ge-yafang 已提交
2498
    console.error(`ExecuteSql failed, code is ${err.code},message is ${err.message}`);
2499 2500 2501
})
```

2502
### beginTransaction
2503 2504 2505 2506 2507 2508 2509

beginTransaction():void

在开始执行SQL语句之前,开始事务。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

2510 2511 2512 2513
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

L
LiRui 已提交
2514 2515 2516 2517
| **错误码ID** | **错误信息**                                 |
| ------------ | -------------------------------------------- |
| 14800047     | The WAL file size exceeds the default limit. |
| 14800000     | Inner error.                                 |
2518

2519 2520 2521 2522
**示例:**

```js
import featureAbility from '@ohos.ability.featureAbility'
2523 2524 2525 2526 2527 2528 2529
let context = featureAbility.getContext();
const STORE_CONFIG = { 
  name: "RdbTest.db",
  securityLevel: relationalStore.SecurityLevel.S1
};
relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
  if (err) {
G
ge-yafang 已提交
2530
    console.error(`GetRdbStore failed, code is ${err.code},message is ${err.message}`);
2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541
    return;
  }
  store.beginTransaction();
  const valueBucket = {
    "name": "lisi",
	"age": 18,
	"salary": 100.5,
	"blobType": new Uint8Array([1, 2, 3]),
  };
  await store.insert("test", valueBucket);
  store.commit();
2542 2543 2544
})
```

2545
### commit
2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556

commit():void

提交已执行的SQL语句。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**示例:**

```js
import featureAbility from '@ohos.ability.featureAbility'
2557 2558 2559 2560 2561 2562 2563
let context = featureAbility.getContext();
const STORE_CONFIG = { 
  name: "RdbTest.db",
  securityLevel: relationalStore.SecurityLevel.S1
};
relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
  if (err) {
G
ge-yafang 已提交
2564
     console.error(`GetRdbStore failed, code is ${err.code},message is ${err.message}`);
2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575
     return;
  }
  store.beginTransaction();
  const valueBucket = {
	"name": "lisi",
	"age": 18,
	"salary": 100.5,
	"blobType": new Uint8Array([1, 2, 3]),
  };
  await store.insert("test", valueBucket);
  store.commit();
2576 2577 2578
})
```

2579
### rollBack
2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590

rollBack():void

回滚已经执行的SQL语句。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**示例:**

```js
import featureAbility from '@ohos.ability.featureAbility'
2591 2592 2593 2594 2595 2596 2597
let context = featureAbility.getContext();
const STORE_CONFIG = { 
  name: "RdbTest.db",
  securityLevel: relationalStore.SecurityLevel.S1
};
relationalStore.getRdbStore(context, STORE_CONFIG, async function (err, store) {
  if (err) {
G
ge-yafang 已提交
2598
    console.error(`GetRdbStore failed, code is ${err.code},message is ${err.message}`);
2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612
    return;
  }
  try {
    store.beginTransaction()
    const valueBucket = {
	  "id": 1,
	  "name": "lisi",
	  "age": 18,
	  "salary": 100.5,
	  "blobType": new Uint8Array([1, 2, 3]),
	};
	await store.insert("test", valueBucket);
    store.commit();
  } catch (err) {
G
ge-yafang 已提交
2613
    console.error(`Transaction failed, code is ${err.code},message is ${err.message}`);
2614 2615
    store.rollBack();
  }
2616 2617 2618
})
```

2619
### backup
2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633

backup(destName:string, callback: AsyncCallback&lt;void&gt;):void

以指定名称备份数据库,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| destName | string                    | 是   | 指定数据库的备份文件名。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。   |

L
LiRui 已提交
2634 2635 2636 2637 2638 2639 2640 2641
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2642 2643 2644
**示例:**

```js
2645 2646
store.backup("dbBackup.db", function(err) {
  if (err) {
G
ge-yafang 已提交
2647
    console.error(`Backup failed, code is ${err.code},message is ${err.message}`);
2648 2649 2650
    return;
  }
  console.info(`Backup success.`);
2651 2652 2653
})
```

2654
### backup
2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673

backup(destName:string): Promise&lt;void&gt;

以指定名称备份数据库,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型   | 必填 | 说明                     |
| -------- | ------ | ---- | ------------------------ |
| destName | string | 是   | 指定数据库的备份文件名。 |

**返回值**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

L
LiRui 已提交
2674 2675 2676 2677 2678 2679 2680 2681
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2682 2683 2684
**示例:**

```js
2685
let promiseBackup = store.backup("dbBackup.db");
2686
promiseBackup.then(()=>{
2687
  console.info(`Backup success.`);
2688
}).catch((err)=>{
G
ge-yafang 已提交
2689
  console.error(`Backup failed, code is ${err.code},message is ${err.message}`);
2690 2691 2692
})
```

2693
### restore
2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707

restore(srcName:string, callback: AsyncCallback&lt;void&gt;):void

从指定的数据库备份文件恢复数据库,使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| srcName  | string                    | 是   | 指定数据库的备份文件名。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。   |

L
LiRui 已提交
2708 2709 2710 2711 2712 2713 2714 2715
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2716 2717 2718
**示例:**

```js
2719 2720
store.restore("dbBackup.db", function(err) {
  if (err) {
G
ge-yafang 已提交
2721
    console.error(`Restore failed, code is ${err.code},message is ${err.message}`);
2722 2723 2724
    return;
  }
  console.info(`Restore success.`);
2725 2726 2727
})
```

2728
### restore
2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747

restore(srcName:string): Promise&lt;void&gt;

从指定的数据库备份文件恢复数据库,使用Promise异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名  | 类型   | 必填 | 说明                     |
| ------- | ------ | ---- | ------------------------ |
| srcName | string | 是   | 指定数据库的备份文件名。 |

**返回值**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

L
LiRui 已提交
2748 2749 2750 2751 2752 2753 2754 2755
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2756 2757 2758
**示例:**

```js
2759
let promiseRestore = store.restore("dbBackup.db");
2760
promiseRestore.then(()=>{
2761
  console.info(`Restore success.`);
2762
}).catch((err)=>{
G
ge-yafang 已提交
2763
  console.error(`Restore failed, code is ${err.code},message is ${err.message}`);
2764 2765 2766
})
```

2767
### setDistributedTables
2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783

setDistributedTables(tables: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void

设置分布式列表,使用callback异步回调。

**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                      | 必填 | 说明                   |
| -------- | ------------------------- | ---- | ---------------------- |
| tables   | Array&lt;string&gt;       | 是   | 要设置的分布式列表表名 |
| callback | AsyncCallback&lt;void&gt; | 是   | 指定callback回调函数。 |

L
LiRui 已提交
2784 2785 2786 2787 2788 2789 2790 2791
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2792 2793 2794
**示例:**

```js
2795 2796
store.setDistributedTables(["EMPLOYEE"], function (err) {
  if (err) {
G
ge-yafang 已提交
2797
    console.error(`SetDistributedTables failed, code is ${err.code},message is ${err.message}`);
2798 2799 2800
    return;
  }
  console.info(`SetDistributedTables successfully.`);
2801 2802 2803
})
```

2804
### setDistributedTables
2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825

 setDistributedTables(tables: Array&lt;string&gt;): Promise&lt;void&gt;

设置分布式列表,使用Promise异步回调。

**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型                | 必填 | 说明                     |
| ------ | ------------------- | ---- | ------------------------ |
| tables | Array&lt;string&gt; | 是   | 要设置的分布式列表表名。 |

**返回值**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

L
LiRui 已提交
2826 2827 2828 2829 2830 2831 2832 2833
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2834 2835 2836
**示例:**

```js
2837
let promise = store.setDistributedTables(["EMPLOYEE"]);
2838
promise.then(() => {
2839
  console.info(`SetDistributedTables successfully.`);
2840
}).catch((err) => {
G
ge-yafang 已提交
2841
  console.error(`SetDistributedTables failed, code is ${err.code},message is ${err.message}`);
2842 2843 2844
})
```

2845
### obtainDistributedTableName
2846 2847 2848

obtainDistributedTableName(device: string, table: string, callback: AsyncCallback&lt;string&gt;): void

L
device  
lihuihui 已提交
2849
根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名, 使用callback异步回调。
2850

L
device  
lihuihui 已提交
2851 2852 2853 2854
> **说明:**
>
> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。

L
device  
lihuihui 已提交
2855 2856 2857 2858
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

2859 2860 2861 2862
**参数:**

| 参数名   | 类型                        | 必填 | 说明                                                         |
| -------- | --------------------------- | ---- | ------------------------------------------------------------ |
L
device  
lihuihui 已提交
2863
| device   | string                      | 是   | 远程设备ID 。                                                |
L
devices  
lihuihui 已提交
2864
| table    | string                      | 是   | 远程设备的本地表名。                                         |
2865 2866
| callback | AsyncCallback&lt;string&gt; | 是   | 指定的callback回调函数。如果操作成功,返回远程设备的分布式表名。 |

L
LiRui 已提交
2867 2868 2869 2870 2871 2872 2873 2874
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2875 2876 2877
**示例:**

```js
L
device  
lihuihui 已提交
2878 2879
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
2880
let deviceId = null;
L
device  
lihuihui 已提交
2881 2882 2883 2884 2885 2886 2887 2888

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
L
lihuihui 已提交
2889
    deviceId = devices[0].deviceId;
L
device  
lihuihui 已提交
2890 2891 2892
})

store.obtainDistributedTableName(deviceId, "EMPLOYEE", function (err, tableName) {
2893
    if (err) {
G
ge-yafang 已提交
2894
        console.error(`ObtainDistributedTableName failed, code is ${err.code},message is ${err.message}`);
2895
        return;
2896
    }
2897
    console.info(`ObtainDistributedTableName successfully, tableName= ${tableName}`);
2898 2899 2900
})
```

2901
### obtainDistributedTableName
2902 2903 2904

 obtainDistributedTableName(device: string, table: string): Promise&lt;string&gt;

L
device  
lihuihui 已提交
2905
根据远程设备的本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名,使用Promise异步回调。
2906

L
device  
lihuihui 已提交
2907 2908 2909 2910
> **说明:**
>
> 其中device通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。

L
device  
lihuihui 已提交
2911 2912 2913 2914
**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

2915 2916
**参数:**

L
devices  
lihuihui 已提交
2917 2918
| 参数名 | 类型   | 必填 | 说明                 |
| ------ | ------ | ---- | -------------------- |
L
device  
lihuihui 已提交
2919
| device | string | 是   | 远程设备ID。         |
L
devices  
lihuihui 已提交
2920
| table  | string | 是   | 远程设备的本地表名。 |
2921 2922 2923 2924 2925 2926 2927

**返回值**

| 类型                  | 说明                                                  |
| --------------------- | ----------------------------------------------------- |
| Promise&lt;string&gt; | Promise对象。如果操作成功,返回远程设备的分布式表名。 |

L
LiRui 已提交
2928 2929 2930 2931 2932 2933 2934 2935
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2936 2937 2938
**示例:**

```js
L
device  
lihuihui 已提交
2939 2940
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
2941
let deviceId = null;
L
device  
lihuihui 已提交
2942 2943 2944 2945 2946 2947 2948 2949

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
L
lihuihui 已提交
2950
    deviceId = devices[0].deviceId;
L
device  
lihuihui 已提交
2951 2952 2953
})

let promise = store.obtainDistributedTableName(deviceId, "EMPLOYEE");
2954
promise.then((tableName) => {
2955
  console.info(`ObtainDistributedTableName successfully, tableName= ${tableName}`);
2956
}).catch((err) => {
G
ge-yafang 已提交
2957
  console.error(`ObtainDistributedTableName failed, code is ${err.code},message is ${err.message}`);
2958 2959 2960
})
```

2961
### sync
2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974

sync(mode: SyncMode, predicates: RdbPredicates, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;): void

在设备之间同步数据, 使用callback异步回调。

**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                               | 必填 | 说明                                                         |
| ---------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
2975 2976
| mode       | [SyncMode](#syncmode)                             | 是   | 指同步模式。该值可以是推、拉。                               |
| predicates | [RdbPredicates](#rdbpredicates)               | 是   | 约束同步数据和设备。                                         |
2977 2978
| callback   | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是   | 指定的callback回调函数,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |

L
LiRui 已提交
2979 2980 2981 2982 2983 2984 2985 2986
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

2987 2988 2989
**示例:**

```js
L
device  
lihuihui 已提交
2990 2991
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
2992
let deviceIds = [];
L
device  
lihuihui 已提交
2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
    for (var i = 0; i < devices.length; i++) {
        deviceIds[i] = devices[i].deviceId;
    }
})

3006
let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
L
device  
lihuihui 已提交
3007
predicates.inDevices(deviceIds);
3008 3009
store.sync(relationalStore.SyncMode.SYNC_MODE_PUSH, predicates, function (err, result) {
  if (err) {
G
ge-yafang 已提交
3010
    console.error(`Sync failed, code is ${err.code},message is ${err.message}`);
3011 3012 3013 3014 3015 3016
    return;
  }
  console.info(`Sync done.`);
  for (let i = 0; i < result.length; i++) {
    console.info(`device= ${result[i][0]}, status= ${result[i][1]}`);
  }
3017 3018 3019
})
```

3020
### sync
3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033

 sync(mode: SyncMode, predicates: RdbPredicates): Promise&lt;Array&lt;[string, number]&gt;&gt;

在设备之间同步数据,使用Promise异步回调。

**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型                                 | 必填 | 说明                           |
| ---------- | ------------------------------------ | ---- | ------------------------------ |
3034 3035
| mode       | [SyncMode](#syncmode)               | 是   | 指同步模式。该值可以是推、拉。 |
| predicates | [RdbPredicates](#rdbpredicates) | 是   | 约束同步数据和设备。           |
3036 3037 3038 3039 3040 3041 3042

**返回值**

| 类型                                         | 说明                                                         |
| -------------------------------------------- | ------------------------------------------------------------ |
| Promise&lt;Array&lt;[string, number]&gt;&gt; | Promise对象,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |

L
LiRui 已提交
3043 3044 3045 3046 3047 3048 3049 3050
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                 |
| ------------ | ---------------------------- |
| 14800000     | Inner error.                 |

3051 3052 3053
**示例:**

```js
L
device  
lihuihui 已提交
3054 3055
import deviceManager from '@ohos.distributedHardware.deviceManager';
let dmInstance = null;
L
lihuihui 已提交
3056
let deviceIds = [];
L
device  
lihuihui 已提交
3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069

deviceManager.createDeviceManager("com.example.appdatamgrverify", (err, manager) => {
    if (err) {
        console.log("create device manager failed, err=" + err);
        return;
    }
    dmInstance = manager;
    let devices = dmInstance.getTrustedDeviceListSync();
    for (var i = 0; i < devices.length; i++) {
        deviceIds[i] = devices[i].deviceId;
    }
})

3070
let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
L
device  
lihuihui 已提交
3071
predicates.inDevices(deviceIds);
3072
let promise = store.sync(relationalStore.SyncMode.SYNC_MODE_PUSH, predicates);
W
wangxiyue 已提交
3073
promise.then((result) =>{
3074
  console.info(`Sync done.`);
W
wangxiyue 已提交
3075
  for (let i = 0; i < result.length; i++) {
3076 3077
    console.info(`device= ${result[i][0]}, status= ${result[i][1]}`);
  }
3078
}).catch((err) => {
G
ge-yafang 已提交
3079
  console.error(`Sync failed, code is ${err.code},message is ${err.message}`);
3080 3081 3082
})
```

3083
### on('dataChange')
3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095

on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void

注册数据库的观察者。当分布式数据库中的数据发生更改时,将调用回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                | 必填 | 说明                                        |
| -------- | ----------------------------------- | ---- | ------------------------------------------- |
| event    | string                              | 是   | 取值为'dataChange',表示数据更改。          |
P
PaDaBoo 已提交
3096
| type     | [SubscribeType](#subscribetype)    | 是   | 订阅类型。 |
L
delete  
lihuihui 已提交
3097
| observer | Callback&lt;Array&lt;string&gt;&gt; | 是   | 指分布式数据库中数据更改事件的观察者。Array&lt;string>为数据库中的数据发生改变的对端设备ID。 |
3098 3099 3100 3101 3102

**示例:**

```js
function storeObserver(devices) {
3103 3104 3105
  for (let i = 0; i < devices.length; i++) {
    console.info(`device= ${devices[i]} data changed`);
  }
3106 3107
}
try {
3108
  store.on('dataChange', relationalStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver);
3109
} catch (err) {
G
ge-yafang 已提交
3110
  console.error(`Register observer failed, code is ${err.code},message is ${err.message}`);
3111 3112 3113
}
```

3114
### off('dataChange')
3115 3116 3117 3118 3119 3120 3121 3122 3123 3124

off(event:'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void

从数据库中删除指定类型的指定观察者, 使用callback异步回调。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型                                | 必填 | 说明                                        |
P
PaDaBoo 已提交
3125
| -------- | ---------------------------------- | ---- | ------------------------------------------ |
3126
| event    | string                              | 是   | 取值为'dataChange',表示数据更改。          |
P
PaDaBoo 已提交
3127
| type     | [SubscribeType](#subscribetype)     | 是   | 订阅类型。                                 |
L
delete  
lihuihui 已提交
3128
| observer | Callback&lt;Array&lt;string&gt;&gt; | 是   | 指已注册的数据更改观察者。Array&lt;string>为数据库中的数据发生改变的对端设备ID。 |
3129 3130 3131 3132 3133

**示例:**

```js
function storeObserver(devices) {
3134 3135 3136
  for (let i = 0; i < devices.length; i++) {
    console.info(`device= ${devices[i]} data changed`);
  }
3137 3138
}
try {
3139
  store.off('dataChange', relationalStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver);
3140
} catch (err) {
G
ge-yafang 已提交
3141
  console.error(`Unregister observer failed, code is ${err.code},message is ${err.message}`);
3142 3143 3144
}
```

3145
## ResultSet
3146 3147 3148 3149 3150

提供通过查询数据库生成的数据库结果集的访问方法。结果集是指用户调用关系型数据库查询接口之后返回的结果集合,提供了多种灵活的数据访问方式,以便用户获取各项数据。

### 使用说明

3151
首先需要获取resultSet对象。
3152 3153

```js
W
wangxiyue 已提交
3154
let resultSet = null;
3155
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
3156
predicates.equalTo("AGE", 18);
3157
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
W
wangxiyue 已提交
3158 3159
promise.then((result) => {
  resultSet = result;
3160 3161
  console.info(`resultSet columnNames: ${resultSet.columnNames}`);
  console.info(`resultSet columnCount: ${resultSet.columnCount}`);
3162 3163 3164
});
```

3165
### 属性
3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

| 名称         | 类型            | 必填 | 说明                             |
| ------------ | ------------------- | ---- | -------------------------------- |
| columnNames  | Array&lt;string&gt; | 是   | 获取结果集中所有列的名称。       |
| columnCount  | number              | 是   | 获取结果集中的列数。             |
| rowCount     | number              | 是   | 获取结果集中的行数。             |
| rowIndex     | number              | 是   | 获取结果集当前行的索引。         |
| isAtFirstRow | boolean             | 是   | 检查结果集是否位于第一行。       |
| isAtLastRow  | boolean             | 是   | 检查结果集是否位于最后一行。     |
| isEnded      | boolean             | 是   | 检查结果集是否位于最后一行之后。 |
| isStarted    | boolean             | 是   | 检查指针是否移动过。             |
| isClosed     | boolean             | 是   | 检查当前结果集是否关闭。         |

3181
### getColumnIndex
3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206

getColumnIndex(columnName: string): number

根据指定的列名获取列索引。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名     | 类型   | 必填 | 说明                       |
| ---------- | ------ | ---- | -------------------------- |
| columnName | string | 是   | 表示结果集中指定列的名称。 |

**返回值:**

| 类型   | 说明               |
| ------ | ------------------ |
| number | 返回指定列的索引。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
3207
| 14800013     | The column value is null or the column type is incompatible. |
3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218

**示例:**

  ```js
resultSet.goToFirstRow();
const id = resultSet.getLong(resultSet.getColumnIndex("ID"));
const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
  ```

3219
### getColumnName
3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244

getColumnName(columnIndex: number): string

根据指定的列索引获取列名。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                       |
| ----------- | ------ | ---- | -------------------------- |
| columnIndex | number | 是   | 表示结果集中指定列的索引。 |

**返回值:**

| 类型   | 说明               |
| ------ | ------------------ |
| string | 返回指定列的名称。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
3245
| 14800013     | The column value is null or the column type is incompatible. |
3246 3247 3248 3249 3250 3251 3252 3253 3254

**示例:**

  ```js
const id = resultSet.getColumnName(0);
const name = resultSet.getColumnName(1);
const age = resultSet.getColumnName(2);
  ```

3255
### goTo
3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280

goTo(offset:number): boolean

向前或向后转至结果集的指定行,相对于其当前位置偏移。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名 | 类型   | 必填 | 说明                         |
| ------ | ------ | ---- | ---------------------------- |
| offset | number | 是   | 表示相对于当前位置的偏移量。 |

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3281
| 14800012     | The result set is empty or the specified location is invalid. |
3282 3283 3284 3285

**示例:**

  ```js
3286 3287
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise= store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3288
promise.then((resultSet) => {
3289 3290
  resultSet.goTo(1);
  resultSet.close();
3291
}).catch((err) => {
G
ge-yafang 已提交
3292
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3293 3294 3295
});
  ```

3296
### goToRow
3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321

goToRow(position: number): boolean

转到结果集的指定行。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名   | 类型   | 必填 | 说明                     |
| -------- | ------ | ---- | ------------------------ |
| position | number | 是   | 表示要移动到的指定位置。 |

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3322
| 14800012     | The result set is empty or the specified location is invalid. |
3323 3324 3325 3326

**示例:**

  ```js
3327 3328
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3329
promise.then((resultSet) => {
W
wangxiyue 已提交
3330
  resultSet.goToRow(5);
3331
  resultSet.close();
3332
}).catch((err) => {
G
ge-yafang 已提交
3333
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3334 3335 3336
});
  ```

3337
### goToFirstRow
3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357

goToFirstRow(): boolean


转到结果集的第一行。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3358
| 14800012     | The result set is empty or the specified location is invalid. |
3359 3360 3361 3362

**示例:**

  ```js
3363 3364
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3365
promise.then((resultSet) => {
3366 3367
  resultSet.goToFirstRow();
  resultSet.close();
3368
}).catch((err) => {
G
ge-yafang 已提交
3369
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3370 3371 3372
});
  ```

3373
### goToLastRow
3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392

goToLastRow(): boolean

转到结果集的最后一行。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3393
| 14800012     | The result set is empty or the specified location is invalid. |
3394 3395 3396 3397

**示例:**

  ```js
3398 3399
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3400
promise.then((resultSet) => {
3401 3402
  resultSet.goToLastRow();
  resultSet.close();
3403
}).catch((err) => {
G
ge-yafang 已提交
3404
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3405 3406 3407
});
  ```

3408
### goToNextRow
3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427

goToNextRow(): boolean

转到结果集的下一行。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3428
| 14800012     | The result set is empty or the specified location is invalid. |
3429 3430 3431 3432

**示例:**

  ```js
3433 3434
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3435
promise.then((resultSet) => {
3436 3437
  resultSet.goToNextRow();
  resultSet.close();
3438
}).catch((err) => {
G
ge-yafang 已提交
3439
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3440 3441 3442
});
  ```

3443
### goToPreviousRow
3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462

goToPreviousRow(): boolean

转到结果集的上一行。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**返回值:**

| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3463
| 14800012     | The result set is empty or the specified location is invalid. |
3464 3465 3466 3467

**示例:**

  ```js
3468 3469
let predicates = new relationalStore.RdbPredicates("EMPLOYEE");
let promise = store.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3470
promise.then((resultSet) => {
3471 3472
  resultSet.goToPreviousRow();
  resultSet.close();
3473
}).catch((err) => {
G
ge-yafang 已提交
3474
  console.error(`query failed, code is ${err.code},message is ${err.message}`);
3475 3476 3477
});
  ```

3478
### getBlob
3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497

getBlob(columnIndex: number): Uint8Array

以字节数组的形式获取当前行中指定列的值。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                    |
| ----------- | ------ | ---- | ----------------------- |
| columnIndex | number | 是   | 指定的列索引,从0开始。 |

**返回值:**

| 类型       | 说明                             |
| ---------- | -------------------------------- |
| Uint8Array | 以字节数组的形式返回指定列的值。 |

L
LiRui 已提交
3498 3499 3500 3501 3502 3503 3504 3505
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
| 14800013     | The column value is null or the column type is incompatible. |

3506 3507 3508 3509 3510 3511
**示例:**

  ```js
const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES"));
  ```

3512
### getString
3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531

getString(columnIndex: number): string

以字符串形式获取当前行中指定列的值。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                    |
| ----------- | ------ | ---- | ----------------------- |
| columnIndex | number | 是   | 指定的列索引,从0开始。 |

**返回值:**

| 类型   | 说明                         |
| ------ | ---------------------------- |
| string | 以字符串形式返回指定列的值。 |

L
LiRui 已提交
3532 3533 3534 3535 3536 3537 3538 3539
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
| 14800013     | The column value is null or the column type is incompatible. |

3540 3541 3542 3543 3544 3545
**示例:**

  ```js
const name = resultSet.getString(resultSet.getColumnIndex("NAME"));
  ```

3546
### getLong
3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561

getLong(columnIndex: number): number

以Long形式获取当前行中指定列的值。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                    |
| ----------- | ------ | ---- | ----------------------- |
| columnIndex | number | 是   | 指定的列索引,从0开始。 |

**返回值:**

L
int64  
lihuihui 已提交
3562 3563 3564
| 类型   | 说明                                                         |
| ------ | ------------------------------------------------------------ |
| number | 以Long形式返回指定列的值。<br>该接口支持的数据范围是:Number.MIN_SAFE_INTEGER ~ Number.MAX_SAFE_INTEGER,若超出该范围,建议使用[getDouble](#getdouble)。 |
3565

L
LiRui 已提交
3566 3567 3568 3569 3570 3571 3572 3573
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
| 14800013     | The column value is null or the column type is incompatible. |

3574 3575 3576 3577 3578 3579
**示例:**

  ```js
const age = resultSet.getLong(resultSet.getColumnIndex("AGE"));
  ```

3580
### getDouble
3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599

getDouble(columnIndex: number): number

以double形式获取当前行中指定列的值。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                    |
| ----------- | ------ | ---- | ----------------------- |
| columnIndex | number | 是   | 指定的列索引,从0开始。 |

**返回值:**

| 类型   | 说明                         |
| ------ | ---------------------------- |
| number | 以double形式返回指定列的值。 |

L
LiRui 已提交
3600 3601 3602 3603 3604 3605 3606 3607
**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
| 14800013     | The column value is null or the column type is incompatible. |

3608 3609 3610 3611 3612 3613
**示例:**

  ```js
const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"));
  ```

3614
### isColumnNull
3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639

isColumnNull(columnIndex: number): boolean

检查当前行中指定列的值是否为null。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**参数:**

| 参数名      | 类型   | 必填 | 说明                    |
| ----------- | ------ | ---- | ----------------------- |
| columnIndex | number | 是   | 指定的列索引,从0开始。 |

**返回值:**

| 类型    | 说明                                                      |
| ------- | --------------------------------------------------------- |
| boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 |

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
3640
| 14800013     | The column value is null or the column type is incompatible. |
3641 3642 3643 3644 3645 3646 3647

**示例:**

  ```js
const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES"));
  ```

3648
### close
3649 3650 3651 3652 3653 3654 3655 3656 3657 3658

close(): void

关闭结果集。

**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core

**示例:**

  ```js
3659 3660
let predicatesClose = new relationalStore.RdbPredicates("EMPLOYEE");
let promiseClose = store.query(predicatesClose, ["ID", "NAME", "AGE", "SALARY", "CODES"]);
3661
promiseClose.then((resultSet) => {
3662
  resultSet.close();
3663
}).catch((err) => {
G
ge-yafang 已提交
3664
  console.error(`resultset close failed, code is ${err.code},message is ${err.message}`);
3665 3666 3667 3668 3669 3670 3671 3672 3673
});
  ```

**错误码:**

以下错误码的详细介绍请参见[关系型数据库错误码](../errorcodes/errorcode-data-rdb.md)

| **错误码ID** | **错误信息**                                                 |
| ------------ | ------------------------------------------------------------ |
L
LiRui 已提交
3674
| 14800012     | The result set is empty or the specified location is invalid. |