1# @ohos.data.relationalStore (关系型数据库)(系统接口) 2 3关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Worker线程。 4ArkTS侧支持的基本数据类型:number、string、二进制类型数据、boolean。为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。 5 6该模块提供以下关系型数据库相关的常用功能: 7 8- [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates): 数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。 9- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。 10- [ResultSet](js-apis-data-relationalStore.md#resultset):提供用户调用关系型数据库查询接口之后返回的结果集合。 11 12> **说明:** 13> 14> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 15> 16> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.data.relationalStore (关系型数据库)](js-apis-data-relationalStore.md)。 17 18## 导入模块 19 20```ts 21import relationalStore from '@ohos.data.relationalStore'; 22``` 23 24## StoreConfig 25 26管理关系数据库配置。 27 28| 名称 | 类型 | 必填 | 说明 | 29| ------------- | ------------- | ---- | --------------------------------------------------------- | 30| isSearchable<sup>11+</sup> | boolean | 否 | 指定数据库是否支持搜索,true表示支持搜索,false表示不支持搜索,默认不支持搜索。<br/>**系统接口:** 此接口为系统接口。<br/>从API version 11开始,支持此可选参数。<br/>**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core | 31 32## Reference<sup>11+</sup> 33 34记录表之间通过表字段指定的关联关系。其中表a关联到表b,称a为b关联的子表,b为a关联的父表。 35 36**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 37 38**系统接口:** 此接口为系统接口。 39 40| 名称 | 类型 | 必填 | 说明 | 41| ---------- | ------ | ---- | ---------------------------------------- | 42| sourceTable | string | 是 | 关联的子表。 | 43| targetTable | string | 是 | 关联的父表。 | 44| refFields | Record<string, string> | 是 | 表示关联表的关联字段。键值数据中键为子表字段,值为父表字段。 | 45 46## DistributedConfig<sup>10+</sup> 47 48记录表的分布式配置信息。 49 50**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 51 52| 名称 | 类型 | 必填 | 说明 | 53| -------- | ------- | ---- | ------------------------------------------------------------ | 54| references<sup>11+</sup> | Array<[Reference](#reference11)> | 否 | 设置表之间的关联关系,可以设置多个字段的关联,子表和父表关联字段的值必须相同。默认数据库表之间无关联关系。<br/>**系统接口:** 此接口为系统接口。<br/>从API version 11开始,支持此可选参数。| 55 56## RdbStore 57 58提供管理关系型数据库(RDB)的接口。 59在使用以下相关接口前,请使用[executeSql](js-apis-data-relationalStore.md#executesql)接口初始化数据库表结构和相关数据。 60 61### update 62 63update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>):void 64 65根据DataSharePredicates的指定实例对象更新数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。 66 67**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 68 69**模型约束:** 此接口仅可在Stage模型下可用。 70 71**系统接口:** 此接口为系统接口。 72 73**参数:** 74 75| 参数名 | 类型 | 必填 | 说明 | 76| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 77| table | string | 是 | 指定的目标表名。 | 78| values | [ValuesBucket](js-apis-data-relationalStore.md#valuesbucket) | 是 | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 | 79| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的更新条件。 | 80| callback | AsyncCallback<number> | 是 | 指定的callback回调方法。返回受影响的行数。 | 81 82**错误码:** 83 84以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 85 86| **错误码ID** | **错误信息** | 87| ------------ | -------------------------------------------- | 88| 14800047 | The WAL file size exceeds the default limit. | 89| 14800000 | Inner error. | 90 91**示例:** 92 93```ts 94import dataSharePredicates from '@ohos.data.dataSharePredicates' 95import { ValuesBucket } from '@ohos.data.ValuesBucket'; 96 97let value1 = "Rose"; 98let value2 = 22; 99let value3 = 200.5; 100let value4 = new Uint8Array([1, 2, 3, 4, 5]); 101 102// 以下三种方式可用 103const valueBucket1: ValuesBucket = { 104 'NAME': value1, 105 'AGE': value2, 106 'SALARY': value3, 107 'CODES': value4, 108}; 109const valueBucket2: ValuesBucket = { 110 NAME: value1, 111 AGE: value2, 112 SALARY: value3, 113 CODES: value4, 114}; 115const valueBucket3: ValuesBucket = { 116 "NAME": value1, 117 "AGE": value2, 118 "SALARY": value3, 119 "CODES": value4, 120}; 121 122let predicates = new dataSharePredicates.DataSharePredicates(); 123predicates.equalTo("NAME", "Lisa"); 124if(store != undefined) { 125 (store as relationalStore.RdbStore).update("EMPLOYEE", valueBucket1, predicates, (err, rows) => { 126 if (err) { 127 console.error(`Updated failed, code is ${err.code},message is ${err.message}`); 128 return; 129 } 130 console.info(`Updated row count: ${rows}`); 131 }) 132} 133``` 134 135### update 136 137update(table: string, values: ValuesBucket, predicates: dataSharePredicates.DataSharePredicates):Promise<number> 138 139根据DataSharePredicates的指定实例对象更新数据库中的数据,使用Promise异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。 140 141**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 142 143**模型约束:** 此接口仅可在Stage模型下可用。 144 145**系统接口:** 此接口为系统接口。 146 147**参数:** 148 149| 参数名 | 类型 | 必填 | 说明 | 150| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 151| table | string | 是 | 指定的目标表名。 | 152| values | [ValuesBucket](js-apis-data-relationalStore.md#valuesbucket) | 是 | values指示数据库中要更新的数据行。键值对与数据库表的列名相关联。 | 153| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的更新条件。 | 154 155**返回值**: 156 157| 类型 | 说明 | 158| --------------------- | ----------------------------------------- | 159| Promise<number> | 指定的Promise回调方法。返回受影响的行数。 | 160 161**错误码:** 162 163以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 164 165| **错误码ID** | **错误信息** | 166| ------------ | -------------------------------------------- | 167| 14800047 | The WAL file size exceeds the default limit. | 168| 14800000 | Inner error. | 169 170**示例:** 171 172```ts 173import dataSharePredicates from '@ohos.data.dataSharePredicates'; 174import { ValuesBucket } from '@ohos.data.ValuesBucket'; 175import { BusinessError } from "@ohos.base"; 176 177let value1 = "Rose"; 178let value2 = 22; 179let value3 = 200.5; 180let value4 = new Uint8Array([1, 2, 3, 4, 5]); 181 182// 以下三种方式可用 183const valueBucket1: ValuesBucket = { 184 'NAME': value1, 185 'AGE': value2, 186 'SALARY': value3, 187 'CODES': value4, 188}; 189const valueBucket2: ValuesBucket = { 190 NAME: value1, 191 AGE: value2, 192 SALARY: value3, 193 CODES: value4, 194}; 195const valueBucket3: ValuesBucket = { 196 "NAME": value1, 197 "AGE": value2, 198 "SALARY": value3, 199 "CODES": value4, 200}; 201 202let predicates = new dataSharePredicates.DataSharePredicates(); 203predicates.equalTo("NAME", "Lisa"); 204if(store != undefined) { 205 (store as relationalStore.RdbStore).update("EMPLOYEE", valueBucket1, predicates).then(async (rows: Number) => { 206 console.info(`Updated row count: ${rows}`); 207 }).catch((err: BusinessError) => { 208 console.error(`Updated failed, code is ${err.code},message is ${err.message}`); 209 }) 210} 211``` 212 213### delete 214 215delete(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>):void 216 217根据DataSharePredicates的指定实例对象从数据库中删除数据,使用callback异步回调。 218 219**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 220 221**模型约束:** 此接口仅可在Stage模型下可用。 222 223**系统接口:** 此接口为系统接口。 224 225**参数:** 226 227| 参数名 | 类型 | 必填 | 说明 | 228| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- | 229| table | string | 是 | 指定的目标表名。 | 230| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的删除条件。 | 231| callback | AsyncCallback<number> | 是 | 指定callback回调函数。返回受影响的行数。 | 232 233**错误码:** 234 235以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 236 237| **错误码ID** | **错误信息** | 238| ------------ | -------------------------------------------- | 239| 14800047 | The WAL file size exceeds the default limit. | 240| 14800000 | Inner error. | 241 242**示例:** 243 244```ts 245import dataSharePredicates from '@ohos.data.dataSharePredicates'; 246 247let predicates = new dataSharePredicates.DataSharePredicates(); 248predicates.equalTo("NAME", "Lisa"); 249if(store != undefined) { 250 (store as relationalStore.RdbStore).delete("EMPLOYEE", predicates, (err, rows) => { 251 if (err) { 252 console.error(`Delete failed, code is ${err.code},message is ${err.message}`); 253 return; 254 } 255 console.info(`Delete rows: ${rows}`); 256 }) 257} 258``` 259 260### delete 261 262delete(table: string, predicates: dataSharePredicates.DataSharePredicates):Promise<number> 263 264根据DataSharePredicates的指定实例对象从数据库中删除数据,使用Promise异步回调。 265 266**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 267 268**模型约束:** 此接口仅可在Stage模型下可用。 269 270**系统接口:** 此接口为系统接口。 271 272**参数:** 273 274| 参数名 | 类型 | 必填 | 说明 | 275| ---------- | ------------------------------------------------------------ | ---- | --------------------------------------------- | 276| table | string | 是 | 指定的目标表名。 | 277| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的删除条件。 | 278 279**返回值**: 280 281| 类型 | 说明 | 282| --------------------- | ------------------------------- | 283| Promise<number> | Promise对象。返回受影响的行数。 | 284 285**错误码:** 286 287以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 288 289| **错误码ID** | **错误信息** | 290| ------------ | -------------------------------------------- | 291| 14800047 | The WAL file size exceeds the default limit. | 292| 14800000 | Inner error. | 293 294**示例:** 295 296```ts 297import dataSharePredicates from '@ohos.data.dataSharePredicates'; 298import { BusinessError } from "@ohos.base"; 299 300let predicates = new dataSharePredicates.DataSharePredicates(); 301predicates.equalTo("NAME", "Lisa"); 302if(store != undefined) { 303 (store as relationalStore.RdbStore).delete("EMPLOYEE", predicates).then((rows: Number) => { 304 console.info(`Delete rows: ${rows}`); 305 }).catch((err: BusinessError) => { 306 console.error(`Delete failed, code is ${err.code},message is ${err.message}`); 307 }) 308} 309``` 310 311### query<sup>10+</sup> 312 313query(table: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<ResultSet>):void 314 315根据指定条件查询数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。 316 317**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 318 319**模型约束:** 此接口仅可在Stage模型下可用。 320 321**系统接口:** 此接口为系统接口。 322 323**参数:** 324 325| 参数名 | 类型 | 必填 | 说明 | 326| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 327| table | string | 是 | 指定的目标表名。 | 328| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的查询条件。 | 329| callback | AsyncCallback<[ResultSet](#resultset)> | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 | 330 331**错误码:** 332 333以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 334 335| **错误码ID** | **错误信息** | 336| ------------ | ---------------------------- | 337| 14800000 | Inner error. | 338 339**示例:** 340 341```ts 342import dataSharePredicates from '@ohos.data.dataSharePredicates'; 343 344let predicates = new dataSharePredicates.DataSharePredicates(); 345predicates.equalTo("NAME", "Rose"); 346if(store != undefined) { 347 (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, (err, resultSet) => { 348 if (err) { 349 console.error(`Query failed, code is ${err.code},message is ${err.message}`); 350 return; 351 } 352 console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`); 353 // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。 354 while (resultSet.goToNextRow()) { 355 const id = resultSet.getLong(resultSet.getColumnIndex("ID")); 356 const name = resultSet.getString(resultSet.getColumnIndex("NAME")); 357 const age = resultSet.getLong(resultSet.getColumnIndex("AGE")); 358 const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")); 359 console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`); 360 } 361 // 释放数据集的内存 362 resultSet.close(); 363 }) 364} 365``` 366 367### query 368 369query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: AsyncCallback<ResultSet>):void 370 371根据指定条件查询数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。 372 373**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 374 375**模型约束:** 此接口仅可在Stage模型下可用。 376 377**系统接口:** 此接口为系统接口。 378 379**参数:** 380 381| 参数名 | 类型 | 必填 | 说明 | 382| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 383| table | string | 是 | 指定的目标表名。 | 384| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的查询条件。 | 385| columns | Array<string> | 是 | 表示要查询的列。如果值为空,则查询应用于所有列。 | 386| callback | AsyncCallback<[ResultSet](#resultset)> | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 | 387 388**错误码:** 389 390以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 391 392| **错误码ID** | **错误信息** | 393| ------------ | ---------------------------- | 394| 14800000 | Inner error. | 395 396**示例:** 397 398```ts 399import dataSharePredicates from '@ohos.data.dataSharePredicates'; 400 401let predicates = new dataSharePredicates.DataSharePredicates(); 402predicates.equalTo("NAME", "Rose"); 403if(store != undefined) { 404 (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], (err, resultSet) => { 405 if (err) { 406 console.error(`Query failed, code is ${err.code},message is ${err.message}`); 407 return; 408 } 409 console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`); 410 // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。 411 while (resultSet.goToNextRow()) { 412 const id = resultSet.getLong(resultSet.getColumnIndex("ID")); 413 const name = resultSet.getString(resultSet.getColumnIndex("NAME")); 414 const age = resultSet.getLong(resultSet.getColumnIndex("AGE")); 415 const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")); 416 console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`); 417 } 418 // 释放数据集的内存 419 resultSet.close(); 420 }) 421} 422``` 423 424### query 425 426query(table: string, predicates: dataSharePredicates.DataSharePredicates, columns?: Array<string>):Promise<ResultSet> 427 428根据指定条件查询数据库中的数据,使用Promise异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。 429 430**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core 431 432**模型约束:** 此接口仅可在Stage模型下可用。 433 434**系统接口:** 此接口为系统接口。 435 436**参数:** 437 438| 参数名 | 类型 | 必填 | 说明 | 439| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------ | 440| table | string | 是 | 指定的目标表名。 | 441| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | DataSharePredicates的实例对象指定的查询条件。 | 442| columns | Array<string> | 否 | 表示要查询的列。如果值为空,则查询应用于所有列。 | 443 444**返回值**: 445 446| 类型 | 说明 | 447| ------------------------------------------------------- | -------------------------------------------------- | 448| Promise<[ResultSet](#resultset)> | Promise对象。如果操作成功,则返回ResultSet对象。 | 449 450**错误码:** 451 452以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 453 454| **错误码ID** | **错误信息** | 455| ------------ | ---------------------------- | 456| 14800000 | Inner error. | 457 458**示例:** 459 460```ts 461import dataSharePredicates from '@ohos.data.dataSharePredicates'; 462import { BusinessError } from "@ohos.base"; 463 464let predicates = new dataSharePredicates.DataSharePredicates(); 465predicates.equalTo("NAME", "Rose"); 466if(store != undefined) { 467 (store as relationalStore.RdbStore).query("EMPLOYEE", predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet: relationalStore.ResultSet) => { 468 console.info(`ResultSet column names: ${resultSet.columnNames}, column count: ${resultSet.columnCount}`); 469 // resultSet是一个数据集合的游标,默认指向第-1个记录,有效的数据从0开始。 470 while (resultSet.goToNextRow()) { 471 const id = resultSet.getLong(resultSet.getColumnIndex("ID")); 472 const name = resultSet.getString(resultSet.getColumnIndex("NAME")); 473 const age = resultSet.getLong(resultSet.getColumnIndex("AGE")); 474 const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")); 475 console.info(`id=${id}, name=${name}, age=${age}, salary=${salary}`); 476 } 477 // 释放数据集的内存 478 resultSet.close(); 479 }).catch((err: BusinessError) => { 480 console.error(`Query failed, code is ${err.code},message is ${err.message}`); 481 }) 482} 483``` 484 485### cloudSync<sup>11+</sup> 486 487cloudSync(mode: SyncMode, predicates: RdbPredicates, progress: Callback<ProgressDetails>, callback: AsyncCallback<void>): void 488 489手动执行按条件进行端云同步,使用callback异步回调。使用该接口需要实现云同步功能。 490 491**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client 492 493**系统接口:** 此接口为系统接口。 494 495**参数:** 496 497| 参数名 | 类型 | 必填 | 说明 | 498|-------------|--------------------------------| ---- |-------------------------------| 499| mode | [SyncMode](js-apis-data-relationalStore.md#syncmode) | 是 | 表示数据库的同步模式。 | 500| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是 | 表示同步数据的谓词条件。 | 501| progress | Callback<[ProgressDetails](js-apis-data-relationalStore.md#details10)> | 是 | 用来处理数据库同步详细信息的回调函数。 | 502| callback | AsyncCallback<void> | 是 | 指定的callback回调函数,用于向调用者发送同步结果。 | 503 504**示例:** 505 506```ts 507let predicates = new relationalStore.RdbPredicates("EMPLOYEE"); 508predicates.in("id", ["id1", "id2"]); 509 510if(store != undefined) { 511 (store as relationalStore.RdbStore).cloudSync(relationalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, predicates, (progressDetail: relationalStore.ProgressDetails) => { 512 console.info(`progress: ${progressDetail}`); 513 }, (err) => { 514 if (err) { 515 console.error(`cloudSync failed, code is ${err.code},message is ${err.message}}`); 516 return; 517 } 518 console.info('Cloud sync succeeded'); 519 }); 520}; 521``` 522 523### cloudSync<sup>11+</sup> 524 525cloudSync(mode: SyncMode, predicates: RdbPredicates, progress: Callback<ProgressDetails>): Promise<void> 526 527手动执行按条件进行端云同步,使用Promise异步处理。使用该接口需要实现云同步功能。 528 529**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client 530 531**系统接口:** 此接口为系统接口。 532 533**参数:** 534 535| 参数名 | 类型 | 必填 | 说明 | 536|------------|---------------------------------| ---- |---------------------| 537| mode | [SyncMode](js-apis-data-relationalStore.md#syncmode) | 是 | 表示数据库的同步模式。 | 538| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是 | 表示同步数据的谓词条件。 | 539| progress | Callback<[ProgressDetails](js-apis-data-relationalStore.md#progressdetails10)> | 是 | 用来处理数据库同步详细信息的回调函数。 | 540 541**返回值**: 542 543| 类型 | 说明 | 544| ------------------- | --------------------------------------- | 545| Promise<void> | Promise对象,用于向调用者发送同步结果。 | 546 547**示例:** 548 549```ts 550import {BusinessError} from "@ohos.base"; 551 552let predicates = new relationalStore.RdbPredicates("EMPLOYEE"); 553predicates.in("id", ["id1", "id2"]); 554 555if(store != undefined) { 556 (store as relationalStore.RdbStore).cloudSync(relationalStore.SyncMode.SYNC_MODE_CLOUD_FIRST, predicates, (progressDetail: relationalStore.ProgressDetails) => { 557 console.info(`progress: ${progressDetail}`); 558 }).then(() => { 559 console.info('Cloud sync succeeded'); 560 }).catch((err: BusinessError) => { 561 console.error(`cloudSync failed, code is ${err.code},message is ${err.message}}`); 562 }); 563}; 564``` 565 566### querySharingResource<sup>11+</sup> 567 568querySharingResource(predicates: RdbPredicates, columns?: Array<string>): Promise<ResultSet> 569 570根据谓词条件匹配的数据记录查找对应记录的共享资源标识,返回查找的结果集。 如果指定了列字段,则返回结果集中同时包含对应列的字段值,使用Promise异步回调。 571 572**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client 573 574**系统接口:** 此接口为系统接口。 575 576**参数:** 577 578| 参数名 | 类型 | 必填 | 说明 | 579| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- | 580| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是 | 表示查询的谓词条件。 | 581| columns | Array<string> | 否 | 表示要查找的列字段名。此参数不填时,返回的结果集中只包含共享资源标识字段。 | 582 583**返回值:** 584 585| 参数名 | 说明 | 586| -------- | ------------------------------------------------- | 587| Promise<[ResultSet](#resultset)> | Promise对象,返回查询的结果集。 | 588 589**错误码:** 590 591以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 592 593| **错误码ID** | **错误信息** | 594| ------------ | -------------------------------------- | 595| 14800000 | Inner error. | 596 597**示例:** 598 599```ts 600import { BusinessError } from "@ohos.base"; 601 602let sharingResource: string; 603let predicates = new relationalStore.RdbPredicates('test_table'); 604predicates.equalTo('data', 'data_test'); 605if(store != undefined) { 606 (store as relationalStore.RdbStore).querySharingResource(predicates, ['uuid', 'data']).then((resultSet) => { 607 if (!resultSet.goToFirstRow()) { 608 console.error(`resultSet error`); 609 return; 610 } 611 const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD)); 612 console.info(`sharing resource: ${res}`); 613 sharingResource = res; 614 }).catch((err: BusinessError) => { 615 console.error(`query sharing resource failed, code is ${err.code},message is ${err.message}`); 616 }) 617} 618 619``` 620 621### querySharingResource<sup>11+</sup> 622 623querySharingResource(predicates: RdbPredicates, callback: AsyncCallback<ResultSet>): void 624 625根据谓词条件匹配的数据记录查找对应记录的共享资源,返回查找的结果集,使用callback异步回调。 626 627**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client 628 629**系统接口:** 此接口为系统接口。 630 631**参数:** 632 633| 参数名 | 类型 | 必填 | 说明 | 634| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- | 635| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是 | 表示查询的谓词条件。 | 636| callback | AsyncCallback<[ResultSet](#resultset)> | 是 | 回调函数。返回查询的结果集。 | 637 638**错误码:** 639 640以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 641 642| **错误码ID** | **错误信息** | 643| ------------ | -------------------------------------- | 644| 14800000 | Inner error. | 645 646**示例:** 647 648```ts 649let sharingResource: string; 650let predicates = new relationalStore.RdbPredicates('test_table'); 651predicates.equalTo('data', 'data_test'); 652if(store != undefined) { 653 (store as relationalStore.RdbStore).querySharingResource(predicates,(err, resultSet) => { 654 if (err) { 655 console.error(`sharing resource failed, code is ${err.code},message is ${err.message}`); 656 return; 657 } 658 if (!resultSet.goToFirstRow()) { 659 console.error(`resultSet error`); 660 return; 661 } 662 const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD)); 663 console.info(`sharing resource: ${res}`); 664 sharingResource = res; 665 }) 666} 667 668``` 669 670### querySharingResource<sup>11+</sup> 671 672querySharingResource(predicates: RdbPredicates, columns: Array<string>, callback: AsyncCallback<ResultSet>): void 673 674根据谓词条件匹配的数据记录查找对应记录的共享资源,返回查找到的共享资源的结果集,同时在结果集中返回谓词条件匹配的指定列名的字段值,使用callback异步回调。 675 676**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Client 677 678**系统接口:** 此接口为系统接口。 679 680**参数:** 681 682| 参数名 | 类型 | 必填 | 说明 | 683| -------- | ----------------------------------------------------- | ---- | -------------------------------------------------- | 684| predicates | [RdbPredicates](js-apis-data-relationalStore.md#rdbpredicates) | 是 | 表示查询的谓词条件。 | 685| columns | Array<string> | 是 | 表示要查找的列字段名。 | 686| callback | AsyncCallback<[ResultSet](#resultset)> | 是 | 回调函数。返回查询的结果集。 | 687 688**错误码:** 689 690以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 691 692| **错误码ID** | **错误信息** | 693| ------------ | -------------------------------------- | 694| 14800000 | Inner error. | 695 696**示例:** 697 698```ts 699let sharingResource: string; 700let predicates = new relationalStore.RdbPredicates('test_table'); 701predicates.equalTo('data', 'data_test'); 702if(store != undefined) { 703 (store as relationalStore.RdbStore).querySharingResource(predicates, ['uuid', 'data'], (err, resultSet) => { 704 if (err) { 705 console.error(`sharing resource failed, code is ${err.code},message is ${err.message}`); 706 return; 707 } 708 if (!resultSet.goToFirstRow()) { 709 console.error(`resultSet error`); 710 return; 711 } 712 const res = resultSet.getString(resultSet.getColumnIndex(relationalStore.Field.SHARING_RESOURCE_FIELD)); 713 console.info(`sharing resource: ${res}`); 714 sharingResource = res; 715 }) 716} 717 718```