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