1# @ohos.data.distributedKVStore (分布式键值数据库) 2 3分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口,应用程序可将数据保存到分布式键值数据库中,并可对分布式键值数据库中的数据进行增加、删除、修改、查询、同步等操作。 4 5该模块提供以下分布式键值数据库相关的常用功能: 6 7- [KVManager](#kvmanager):分布式键值数据库管理实例,用于获取数据库的相关信息。 8- [KVStoreResultSet](#kvstoreresultset):提供获取数据库结果集的相关方法,包括查询和移动数据读取位置等。 9- [Query](#query):使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。 10- [SingleKVStore](#singlekvstore):单版本分布式键值数据库,不对数据所属设备进行区分,提供查询数据和同步数据的方法。 11- [DeviceKVStore](#devicekvstore):设备协同数据库,继承自[SingleKVStore](#singlekvstore),以设备维度对数据进行区分,提供查询数据和同步数据的方法。 12 13> **说明:** 14> 15> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 16 17## 导入模块 18 19```js 20import distributedKVStore from '@ohos.data.distributedKVStore'; 21``` 22 23## KVManagerConfig 24 25提供KVManager实例的配置信息,包括调用方的包名和应用的上下文。 26 27**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 28 29| 名称 | 类型 | 必填 | 说明 | 30| ---------- | --------------------- | ---- | ------------------------------------------------------------ | 31| context | Context | 是 |应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](js-apis-inner-application-uiAbilityContext.md)。 | 32| bundleName | string | 是 | 调用方的包名。 | 33 34## Constants 35 36分布式键值数据库常量。 37 38**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 39 40| 名称 | 值 | 说明 | 41| --------------------- | ------- | --------------------------------------- | 42| MAX_KEY_LENGTH | 1024 | 数据库中Key允许的最大长度,单位字节。 | 43| MAX_VALUE_LENGTH | 4194303 | 数据库中Value允许的最大长度,单位字节。 | 44| MAX_KEY_LENGTH_DEVICE | 896 | 最大设备密钥长度,单位字节。 | 45| MAX_STORE_ID_LENGTH | 128 | 数据库标识符允许的最大长度,单位字节。 | 46| MAX_QUERY_LENGTH | 512000 | 最大查询长度,单位字节。 | 47| MAX_BATCH_SIZE | 128 | 最大批处理操作数量。 | 48 49## ValueType 50 51数据类型枚举。 52 53**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 54 55| 名称 | 说明 | 56| ---------- | ---------------------- | 57| STRING | 表示值类型为字符串。 | 58| INTEGER | 表示值类型为整数。 | 59| FLOAT | 表示值类型为浮点数。 | 60| BYTE_ARRAY | 表示值类型为字节数组。 | 61| BOOLEAN | 表示值类型为布尔值。 | 62| DOUBLE | 表示值类型为双浮点数。 | 63 64## Value 65 66存储在数据库中的值对象。 67 68**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 69 70| 名称 | 类型 |必填 | 说明 | 71| ----- | ------- |-----|------------------------ | 72| type | [ValueType](#valuetype) | 是|值类型。 | 73| value | Uint8Array \| string \| number \| boolean| 是|值。 | 74 75## Entry 76 77存储在数据库中的键值对。 78 79**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 80 81| 名称 | 类型 | 必填 | 说明 | 82| ----- | --------------- | ---- | -------- | 83| key | string | 是 | 键值。 | 84| value | [Value](#value) | 是 | 值对象。 | 85 86## ChangeNotification 87 88数据变更时通知的对象,包括数据插入的数据、更新的数据、删除的数据和设备ID。 89 90**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 91 92| 名称 | 类型 | 必填 | 说明 | 93| ------------- | ----------------- | ---- | ------------------------ | 94| insertEntries | [Entry](#entry)[] | 是 | 数据添加记录。 | 95| updateEntries | [Entry](#entry)[] | 是 | 数据更新记录。 | 96| deleteEntries | [Entry](#entry)[] | 是 | 数据删除记录。 | 97| deviceId | string | 是 | 设备ID,此处为设备UUID。 | 98 99## SyncMode 100 101同步模式枚举。 102 103**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 104 105| 名称 | 说明 | 106| --------- | ---------------------------------------------------- | 107| PULL_ONLY | 表示只能从远端拉取数据到本端。 | 108| PUSH_ONLY | 表示只能从本端推送数据到远端。 | 109| PUSH_PULL | 表示从本端推送数据到远端,然后从远端拉取数据到本端。 | 110 111## SubscribeType 112 113订阅类型枚举。 114 115**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 116 117| 名称 | 说明 | 118| --------------------- | ---------------------------- | 119| SUBSCRIBE_TYPE_LOCAL | 表示订阅本地数据变更。 | 120| SUBSCRIBE_TYPE_REMOTE | 表示订阅远端数据变更。 | 121| SUBSCRIBE_TYPE_ALL | 表示订阅远端和本地数据变更。 | 122 123## KVStoreType 124 125分布式键值数据库类型枚举。 126 127| 名称 | 说明 | 128| -------------------- | ------------------------------------------------------------ | 129| DEVICE_COLLABORATION | 表示多设备协同数据库。<br> **数据库特点:** 数据以设备的维度管理,不存在冲突;支持按照设备的维度查询数据。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore | 130| SINGLE_VERSION | 表示单版本数据库。<br> **数据库特点:** 数据不分设备,设备之间修改相同的key会覆盖。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 131 132## SecurityLevel 133 134数据库的安全级别枚举。 135 136**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 137 138| 名称 | 说明 | 139| -------: | ------------------------------------------------------------ | 140| S1 | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 | 141| S2 | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 | 142| S3 | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 | 143| S4 | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 | 144 145## Options 146 147用于提供创建数据库的配置信息。 148 149| 名称 | 类型 | 必填 | 说明 | 150| --------------- | -------------- | ---- | -------------------------| 151| createIfMissing | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认为true,即创建。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 152| encrypt | boolean | 否 | 设置数据库文件是否加密,默认为false,即不加密。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 153| backup | boolean | 否 | 设置数据库文件是否备份,默认为true,即备份。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 154| autoSync | boolean | 否 | 设置数据库文件是否自动同步。默认为false,即手动同步;设置为true时,表示自动同步。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC | 155| kvStoreType | [KVStoreType](#kvstoretype) | 否 | 设置要创建的数据库类型,默认为DEVICE_COLLABORATION,即多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 156| securityLevel | [SecurityLevel](#securitylevel) | 是 |设置数据库安全级别。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core | 157| schema | [Schema](#schema) | 否 | 设置定义存储在数据库中的值,默认为undefined, 即不使用Schema。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore | 158 159## Schema 160 161表示数据库模式,可以在创建或打开数据库时创建Schema对象并将它们放入[Options](#options)中。 162 163**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 164 165| 名称 | 类型 | 可读 | 可写 | 说明 | 166| ------- | ----------------------- | ---- | ---- | -------------------------- | 167| root | [FieldNode](#fieldnode) | 是 | 是 | 表示json根对象。 | 168| indexes | Array\<string> | 是 | 是 | 表示json类型的字符串数组。 | 169| mode | number | 是 | 是 | 表示Schema的模式。 | 170| skip | number | 是 | 是 | Schema的跳跃大小。 | 171 172### constructor 173 174constructor() 175 176用于创建Schema实例的构造函数。 177 178**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 179 180## FieldNode 181 182表示 Schema 实例的节点,提供定义存储在数据库中的值的方法。 183 184**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 185 186| 名称 | 类型 | 可读 | 可写 | 说明 | 187| -------- | ------- | ---- | ---- | ------------------------------ | 188| nullable | boolean | 是 | 是 | 表示数据库字段是否可以为空。 | 189| default | string | 是 | 是 | 表示Fieldnode的默认值。 | 190| type | number | 是 | 是 | 表示指定节点对应数据类型的值。 | 191 192### constructor 193 194constructor(name: string) 195 196用于创建带有string字段FieldNode实例的构造函数。 197 198**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 199 200**参数:** 201 202| 参数名 | 类型 | 必填 | 说明 | 203| ------ | -------- | ---- | --------------- | 204| name | string | 是 | FieldNode的值。 | 205 206### appendChild 207 208appendChild(child: FieldNode): boolean 209 210在当前 FieldNode 中添加一个子节点。 211 212**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 213 214**参数:** 215 216| 参数名 | 类型 | 必填 | 说明 | 217| ------ | ----------------------- | ---- | ---------------- | 218| child | [FieldNode](#fieldnode) | 是 | 要附加的域节点。 | 219 220**返回值:** 221 222| 类型 | 说明 | 223| ------- | ------------------------------------------------------------ | 224| boolean | 返回true表示子节点成功添加到FieldNode;返回false则表示操作失败。 | 225 226**示例:** 227 228```js 229import ddm from '@ohos.data.distributedKVStore'; 230 231try { 232 let node = new ddm.FieldNode("root"); 233 let child1 = new ddm.FieldNode("child1"); 234 let child2 = new ddm.FieldNode("child2"); 235 let child3 = new ddm.FieldNode("child3"); 236 node.appendChild(child1); 237 node.appendChild(child2); 238 node.appendChild(child3); 239 console.log("appendNode " + JSON.stringify(node)); 240 child1 = null; 241 child2 = null; 242 child3 = null; 243 node = null; 244} catch (e) { 245 console.log("AppendChild " + e); 246} 247``` 248 249## distributedKVStore.createKVManager 250 251createKVManager(config: KVManagerConfig): KVManager 252 253创建一个KVManager对象实例,用于管理数据库对象。 254 255**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 256 257**参数:** 258 259| 参数名 | 类型 | 必填 | 说明 | 260| ------ | ----------------------------- | ---- | --------------------------------------------------------- | 261| config | [KVManagerConfig](#kvmanagerconfig) | 是 | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 | 262 263**返回值:** 264 265| 类型 | 说明 | 266| -------------------------------------- | ------------------------------------------ | 267| [KVManager](#kvmanager) | 返回创建的KVManager对象实例。 | 268 269**示例:** 270 271Stage模型下的示例: 272 273```js 274import UIAbility from '@ohos.app.ability.UIAbility'; 275 276let kvManager; 277export default class EntryAbility extends UIAbility { 278 onCreate() { 279 console.log("MyAbilityStage onCreate") 280 let context = this.context 281 const kvManagerConfig = { 282 context: context, 283 bundleName: 'com.example.datamanagertest', 284 } 285 try { 286 kvManager = distributedKVStore.createKVManager(kvManagerConfig); 287 console.log("Succeeded in creating KVManager"); 288 } catch (e) { 289 console.error(`Failed to create KVManager.code is ${e.code},message is ${e.message}`); 290 } 291 } 292} 293``` 294 295FA模型下的示例: 296 297```js 298import featureAbility from '@ohos.ability.featureAbility'; 299let kvManager; 300let context = featureAbility.getContext() 301const kvManagerConfig = { 302 context: context, 303 bundleName: 'com.example.datamanagertest', 304} 305try { 306 kvManager = distributedKVStore.createKVManager(kvManagerConfig); 307 console.log("Succeeded in creating KVManager"); 308} catch (e) { 309 console.error(`Failed to create KVManager.code is ${e.code},message is ${e.message}`); 310} 311``` 312 313## KVManager 314 315分布式键值数据库管理实例,用于获取分布式键值数据库的相关信息。在调用KVManager的方法前,需要先通过[createKVManager](#distributedkvstorecreatekvmanager)构建一个KVManager实例。 316 317### getKVStore 318 319getKVStore<T >(storeId: string, options: Options, callback: AsyncCallback<T>): void 320 321通过指定Options和storeId,创建并获取分布式键值数据库,使用callback异步回调。 322 323**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 324 325**参数:** 326 327| 参数名 | 类型 | 必填 | 说明 | 328| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 329| storeId | string | 是 | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 330| options | [Options](#options) | 是 | 创建分布式键值实例的配置信息。 | 331| callback | AsyncCallback<T> | 是 | 回调函数。返回创建的分布式键值数据库实例(根据kvStoreType的不同,可以创建SingleKVStore实例和DeviceKVStore实例)。 | 332 333**错误码:** 334 335以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 336 337| **错误码ID** | **错误信息** | 338| ------------ | ------------------------------------------- | 339| 15100002 | Open existed database with changed options. | 340| 15100003 | Database corrupted. | 341 342**示例:** 343 344```js 345let kvStore; 346let kvManager; 347try { 348 const options = { 349 createIfMissing: true, 350 encrypt: false, 351 backup: false, 352 autoSync: true, 353 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 354 securityLevel: distributedKVStore.SecurityLevel.S2, 355 }; 356 kvManager.getKVStore('storeId', options, function (err, store) { 357 if (err) { 358 console.error(`Fail to get KVStore.code is ${err.code},message is ${err.message}`); 359 return; 360 } 361 console.log("Succeeded in getting KVStore"); 362 kvStore = store; 363 }); 364} catch (e) { 365 console.log(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 366} 367``` 368 369### getKVStore 370 371getKVStore<T >(storeId: string, options: Options): Promise<T> 372 373通过指定Options和storeId,创建并获取分布式键值数据库,使用Promise异步回调。 374 375**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 376 377**参数:** 378 379| 参数名 | 类型 | 必填 | 说明 | 380| ------- | ------------------- | ---- | ------------------------------------------------------------ | 381| storeId | string | 是 | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 382| options | [Options](#options) | 是 | 创建分布式键值实例的配置信息。 | 383 384**返回值:** 385 386| 类型 | 说明 | 387| ---------------- | ------------------------------------------------------------ | 388| Promise<T> | Promise对象。返回创建的分布式键值数据库实例(根据kvStoreType的不同,可以创建SingleKVStore实例和DeviceKVStore实例。 | 389 390**错误码:** 391 392以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 393 394| **错误码ID** | **错误信息** | 395| ------------ | ------------------------------------------- | 396| 15100002 | Open existed database with changed options. | 397| 15100003 | Database corrupted. | 398 399**示例:** 400 401```js 402let kvStore; 403let kvManager; 404try { 405 const options = { 406 createIfMissing: true, 407 encrypt: false, 408 backup: false, 409 autoSync: true, 410 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 411 securityLevel: distributedKVStore.SecurityLevel.S2, 412 }; 413 kvManager.getKVStore('storeId', options).then((store) => { 414 console.log("Succeeded in getting KVStore"); 415 kvStore = store; 416 }).catch((err) => { 417 console.error(`Fail to get KVStore.code is ${err.code},message is ${err.message}`); 418 }); 419} catch (e) { 420 console.log(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 421} 422``` 423 424### closeKVStore 425 426closeKVStore(appId: string, storeId: string, callback: AsyncCallback<void>): void 427 428通过storeId的值关闭指定的分布式键值数据库,使用callback异步回调。 429 430**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 431 432**参数:** 433 434| 参数名 | 类型 | 必填 | 说明 | 435| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 436| appId | string | 是 | 所调用数据库方的包名。 | 437| storeId | string | 是 | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 438| callback | AsyncCallback<void> | 是 | 回调函数。 | 439 440**示例:** 441 442```js 443let kvStore; 444let kvManager; 445const options = { 446 createIfMissing: true, 447 encrypt: false, 448 backup: false, 449 autoSync: true, 450 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 451 schema: undefined, 452 securityLevel: distributedKVStore.SecurityLevel.S2, 453} 454try { 455 kvManager.getKVStore('storeId', options, async function (err, store) { 456 console.log('Succeeded in getting KVStore'); 457 kvStore = store; 458 kvManager.closeKVStore('appId', 'storeId', function (err, data) { 459 if (err != undefined) { 460 console.error(`Fail to close KVStore.code is ${err.code},message is ${err.message}`); 461 return; 462 } 463 console.log('Succeeded in closing KVStore'); 464 }); 465 }); 466} catch (e) { 467 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 468} 469``` 470 471### closeKVStore 472 473closeKVStore(appId: string, storeId: string): Promise<void> 474 475通过storeId的值关闭指定的分布式键值数据库,使用Promise异步回调。 476 477**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 478 479**参数:** 480 481| 参数名 | 类型 | 必填 | 说明 | 482| ------- | -------- | ---- | ------------------------------------------------------------ | 483| appId | string | 是 | 所调用数据库方的包名。 | 484| storeId | string | 是 | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 485 486**返回值:** 487 488| 类型 | 说明 | 489| -------------- | ------------------------- | 490| Promise\<void> | 无返回结果的Promise对象。 | 491 492**示例:** 493 494```js 495let kvManager; 496let kvStore; 497const options = { 498 createIfMissing: true, 499 encrypt: false, 500 backup: false, 501 autoSync: true, 502 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 503 schema: undefined, 504 securityLevel: distributedKVStore.SecurityLevel.S2, 505} 506try { 507 kvManager.getKVStore('storeId', options).then(async (store) => { 508 console.log('Succeeded in getting KVStore'); 509 kvStore = store; 510 kvManager.closeKVStore('appId', 'storeId').then(() => { 511 console.log('Succeeded in closing KVStore'); 512 }).catch((err) => { 513 console.error(`Fail to close KVStore.code is ${err.code},message is ${err.message}`); 514 }); 515 }).catch((err) => { 516 console.error(`Fail to get KVStore.code is ${err.code},message is ${err.message}`); 517 }); 518} catch (e) { 519 console.error(`Fail to close KVStore.code is ${e.code},message is ${e.message}`); 520} 521``` 522 523### deleteKVStore 524 525deleteKVStore(appId: string, storeId: string, callback: AsyncCallback<void>): void 526 527通过storeId的值删除指定的分布式键值数据库,使用callback异步回调。 528 529**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 530 531**参数:** 532 533| 参数名 | 类型 | 必填 | 说明 | 534| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 535| appId | string | 是 | 所调用数据库方的包名。 | 536| storeId | string | 是 | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 537| callback | AsyncCallback<void> | 是 | 回调函数。 | 538 539**错误码:** 540 541以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 542 543| **错误码ID** | **错误信息** | 544| ------------ | ------------ | 545| 15100004 | Not found. | 546 547**示例:** 548 549```js 550let kvManager; 551let kvStore; 552const options = { 553 createIfMissing: true, 554 encrypt: false, 555 backup: false, 556 autoSync: true, 557 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 558 schema: undefined, 559 securityLevel: distributedKVStore.SecurityLevel.S2, 560} 561try { 562 kvManager.getKVStore('store', options, async function (err, store) { 563 if (err != undefined) { 564 console.error(`Fail to get KVStore.code is ${err.code},message is ${err.message}`); 565 return; 566 } 567 console.log('Succeeded in getting KVStore'); 568 kvStore = store; 569 kvManager.deleteKVStore('appId', 'storeId', function (err, data) { 570 if (err != undefined) { 571 console.error(`Fail to delete KVStore.code is ${err.code},message is ${err.message}`); 572 return; 573 } 574 console.log(`Succeeded in deleting KVStore`); 575 }); 576 }); 577} catch (e) { 578 console.error(`Fail to delete KVStore.code is ${e.code},message is ${e.message}`); 579} 580``` 581 582### deleteKVStore 583 584deleteKVStore(appId: string, storeId: string): Promise<void> 585 586通过storeId的值删除指定的分布式键值数据库,使用Promise异步回调。 587 588**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 589 590**参数:** 591 592| 参数名 | 类型 | 必填 | 说明 | 593| ------- | -------- | ---- | ------------------------------------------------------------ | 594| appId | string | 是 | 所调用数据库方的包名。 | 595| storeId | string | 是 | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 | 596 597**返回值:** 598 599| 类型 | 说明 | 600| ------------------- | ------------------------- | 601| Promise<void> | 无返回结果的Promise对象。 | 602 603**错误码:** 604 605以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 606 607| **错误码ID** | **错误信息** | 608| ------------ | ------------ | 609| 15100004 | Not found. | 610 611**示例:** 612 613```js 614let kvManager; 615let kvStore; 616const options = { 617 createIfMissing: true, 618 encrypt: false, 619 backup: false, 620 autoSync: true, 621 kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION, 622 schema: undefined, 623 securityLevel: distributedKVStore.SecurityLevel.S2, 624} 625try { 626 kvManager.getKVStore('storeId', options).then(async (store) => { 627 console.log('Succeeded in getting KVStore'); 628 kvStore = store; 629 kvManager.deleteKVStore('appId', 'storeId').then(() => { 630 console.log('Succeeded in deleting KVStore'); 631 }).catch((err) => { 632 console.error(`Fail to delete KVStore.code is ${err.code},message is ${err.message}`); 633 }); 634 }).catch((err) => { 635 console.error(`Fail to get KVStore.code is ${err.code},message is ${err.message}`); 636 }); 637} catch (e) { 638 console.error(`Fail to delete KVStore.code is ${e.code},message is ${e.message}`); 639} 640``` 641 642### getAllKVStoreId 643 644getAllKVStoreId(appId: string, callback: AsyncCallback<string[]>): void 645 646获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore)方法删除的分布式键值数据库的storeId,使用callback异步回调。 647 648**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| -------- | ----------------------------- | ---- | --------------------------------------------------- | 654| appId | string | 是 | 所调用数据库方的包名。 | 655| callback | AsyncCallback<string[]> | 是 | 回调函数。返回所有创建的分布式键值数据库的storeId。 | 656 657**示例:** 658 659```js 660let kvManager; 661try { 662 kvManager.getAllKVStoreId('appId', function (err, data) { 663 if (err != undefined) { 664 console.error(`Fail to get AllKVStoreId.code is ${err.code},message is ${err.message}`); 665 return; 666 } 667 console.log('Succeeded in getting AllKVStoreId'); 668 console.log(`GetAllKVStoreId size = ${data.length}`); 669 }); 670} catch (e) { 671 console.error(`Fail to get AllKVStoreId.code is ${e.code},message is ${e.message}`); 672} 673``` 674 675### getAllKVStoreId 676 677getAllKVStoreId(appId: string): Promise<string[]> 678 679获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore)方法删除的分布式键值数据库的storeId,使用Promise异步回调。 680 681**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 682 683**参数:** 684 685| 参数名 | 类型 | 必填 | 说明 | 686| ------ | -------- | ---- | ---------------------- | 687| appId | string | 是 | 所调用数据库方的包名。 | 688 689**返回值:** 690 691| 类型 | 说明 | 692| ----------------------- | ------------------------------------------------------ | 693| Promise<string[]> | Promise对象。返回所有创建的分布式键值数据库的storeId。 | 694 695**示例:** 696 697```js 698let kvManager; 699try { 700 console.log('GetAllKVStoreId'); 701 kvManager.getAllKVStoreId('appId').then((data) => { 702 console.log('Succeeded in getting AllKVStoreId'); 703 console.log(`GetAllKVStoreId size = ${data.length}`); 704 }).catch((err) => { 705 console.error(`Fail to get AllKVStoreId.code is ${err.code},message is ${err.message}`); 706 }); 707} catch (e) { 708 console.error(`Fail to get AllKVStoreId.code is ${e.code},message is ${e.message}`); 709} 710``` 711 712### on('distributedDataServiceDie') 713 714on(event: 'distributedDataServiceDie', deathCallback: Callback<void>): void 715 716订阅服务状态变更通知。 717 718**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 719 720**参数:** 721 722| 参数名 | 类型 | 必填 | 说明 | 723| ------------- | -------------------- | ---- | ------------------------------------------------------------ | 724| event | string | 是 | 订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 | 725| deathCallback | Callback<void> | 是 | 回调函数。 | 726 727**示例:** 728 729```js 730let kvManager; 731try { 732 console.log('KVManagerOn'); 733 const deathCallback = function () { 734 console.log('death callback call'); 735 } 736 kvManager.on('distributedDataServiceDie', deathCallback); 737} catch (e) { 738 console.log(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 739} 740``` 741 742### off('distributedDataServiceDie') 743 744off(event: 'distributedDataServiceDie', deathCallback?: Callback<void>): void 745 746取消订阅服务状态变更通知。 747 748**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 749 750**参数:** 751 752| 参数名 | 类型 | 必填 | 说明 | 753| ------------- | -------------------- | ---- | ------------------------------------------------------------ | 754| event | string | 是 | 取消订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 | 755| deathCallback | Callback<void> | 否 | 回调函数。 | 756 757**示例:** 758 759```js 760let kvManager; 761try { 762 console.log('KVManagerOff'); 763 const deathCallback = function () { 764 console.log('death callback call'); 765 } 766 kvManager.off('distributedDataServiceDie', deathCallback); 767} catch (e) { 768 console.log(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 769} 770``` 771 772## KVStoreResultSet 773 774提供获取数据库结果集的相关方法,包括查询和移动数据读取位置等。 775 776在调用KVStoreResultSet的方法前,需要先通过[getKVStore](#getkvstore)构建一个SingleKVStore或者DeviceKVStore实例。 777 778### getCount 779 780getCount(): number 781 782获取结果集中的总行数。 783 784**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 785 786**返回值:** 787 788| 类型 | 说明 | 789| ------ | ------------------ | 790| number | 返回数据的总行数。 | 791 792**示例:** 793 794```js 795let kvStore; 796try { 797 let resultSet; 798 kvStore.getResultSet('batch_test_string_key').then((result) => { 799 console.log('getResultSet succeed.'); 800 resultSet = result; 801 }).catch((err) => { 802 console.log('getResultSet failed: ' + err); 803 }); 804 const count = resultSet.getCount(); 805 console.log("getCount succeed:" + count); 806} catch (e) { 807 console.log("getCount failed: " + e); 808} 809``` 810 811### getPosition 812 813getPosition(): number 814 815获取结果集中当前的读取位置。 816 817**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 818 819**返回值:** 820 821| 类型 | 说明 | 822| ------ | ------------------ | 823| number | 返回当前读取位置。 | 824 825**示例:** 826 827```js 828let kvStore; 829try { 830 let resultSet; 831 kvStore.getResultSet('batch_test_string_key').then((result) => { 832 console.log('getResultSet succeeded.'); 833 resultSet = result; 834 }).catch((err) => { 835 console.log('getResultSet failed: ' + err); 836 }); 837 const position = resultSet.getPosition(); 838 console.log("getPosition succeed:" + position); 839} catch (e) { 840 console.log("getPosition failed: " + e); 841} 842``` 843 844### moveToFirst 845 846moveToFirst(): boolean 847 848将读取位置移动到第一行。如果结果集为空,则返回false。 849 850**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 851 852**返回值:** 853 854| 类型 | 说明 | 855| ------- | ----------------------------------------------- | 856| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 857 858**示例:** 859 860```js 861let kvStore; 862try { 863 let resultSet; 864 kvStore.getResultSet('batch_test_string_key').then((result) => { 865 console.log('getResultSet succeed.'); 866 resultSet = result; 867 }).catch((err) => { 868 console.log('getResultSet failed: ' + err); 869 }); 870 const moved1 = resultSet.moveToFirst(); 871 console.log("moveToFirst succeed: " + moved1); 872} catch (e) { 873 console.log("moveToFirst failed " + e); 874} 875``` 876 877### moveToLast 878 879moveToLast(): boolean 880 881将读取位置移动到最后一行。如果结果集为空,则返回false。 882 883**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 884 885**返回值:** 886 887| 类型 | 说明 | 888| ------- | ----------------------------------------------- | 889| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 890 891**示例:** 892 893```js 894let kvStore; 895try { 896 let resultSet; 897 kvStore.getResultSet('batch_test_string_key').then((result) => { 898 console.log('getResultSet succeed.'); 899 resultSet = result; 900 }).catch((err) => { 901 console.log('getResultSet failed: ' + err); 902 }); 903 const moved2 = resultSet.moveToLast(); 904 console.log("moveToLast succeed:" + moved2); 905} catch (e) { 906 console.log("moveToLast failed: " + e); 907} 908``` 909 910### moveToNext 911 912moveToNext(): boolean 913 914将读取位置移动到下一行。如果结果集为空,则返回false。 915 916**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 917 918**返回值:** 919 920| 类型 | 说明 | 921| ------- | ----------------------------------------------- | 922| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 923 924**示例:** 925 926```js 927let kvStore; 928try { 929 let resultSet; 930 kvStore.getResultSet('batch_test_string_key').then((result) => { 931 console.log('getResultSet succeed.'); 932 resultSet = result; 933 }).catch((err) => { 934 console.log('getResultSet failed: ' + err); 935 }); 936 const moved3 = resultSet.moveToNext(); 937 console.log("moveToNext succeed: " + moved3); 938} catch (e) { 939 console.log("moveToNext failed: " + e); 940} 941``` 942 943### moveToPrevious 944 945moveToPrevious(): boolean 946 947将读取位置移动到上一行。如果结果集为空,则返回false。 948 949**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 950 951**返回值:** 952 953| 类型 | 说明 | 954| ------- | ----------------------------------------------- | 955| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 956 957**示例:** 958 959```js 960let kvStore; 961try { 962 let resultSet; 963 kvStore.getResultSet('batch_test_string_key').then((result) => { 964 console.log('getResultSet succeed.'); 965 resultSet = result; 966 }).catch((err) => { 967 console.log('getResultSet failed: ' + err); 968 }); 969 const moved4 = resultSet.moveToPrevious(); 970 console.log("moveToPrevious succeed:" + moved4); 971} catch (e) { 972 console.log("moveToPrevious failed: " + e); 973} 974``` 975 976### move 977 978move(offset: number): boolean 979 980将读取位置移动到当前位置的相对偏移量。 981 982**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 983 984**参数:** 985 986| 参数名 | 类型 | 必填 | 说明 | 987| ------ | -------- | ---- | ------------------------------------------------------------ | 988| offset | number | 是 | 表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。 | 989 990**返回值:** 991 992| 类型 | 说明 | 993| ------- | ----------------------------------------------- | 994| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 995 996**示例:** 997 998```js 999let kvStore; 1000try { 1001 let resultSet; 1002 kvStore.getResultSet('batch_test_string_key').then((result) => { 1003 console.log('Succeeded in getting resultSet'); 1004 resultSet = result; 1005 }).catch((err) => { 1006 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 1007 }); 1008 const moved5 = resultSet.move(1); 1009 console.log(`Succeeded in moving.moved5 = ${moved5}`); 1010} catch (e) { 1011 console.log(`Fail to move.code is ${e.code},message is ${e.message}`); 1012} 1013``` 1014 1015### moveToPosition 1016 1017moveToPosition(position: number): boolean 1018 1019将读取位置从 0 移动到绝对位置。 1020 1021**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1022 1023**参数:** 1024 1025| 参数名 | 类型 | 必填 | 说明 | 1026| -------- | -------- | ---- | -------------- | 1027| position | number | 是 | 表示绝对位置。 | 1028 1029**返回值:** 1030 1031| 类型 | 说明 | 1032| ------- | ----------------------------------------------- | 1033| boolean | 返回true表示操作成功;返回false则表示操作失败。 | 1034 1035**示例** 1036 1037```js 1038let kvStore; 1039try { 1040 let resultSet; 1041 kvStore.getResultSet('batch_test_string_key').then((result) => { 1042 console.log('Succeeded in getting resultSet'); 1043 resultSet = result; 1044 }).catch((err) => { 1045 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 1046 }); 1047 const moved6 = resultSet.moveToPosition(1); 1048 console.log(`Succeeded in moving to position.moved6=${moved6}`); 1049} catch (e) { 1050 console.error(`Fail to move to position.code is ${e.code},message is ${e.message}`); 1051} 1052``` 1053 1054### isFirst 1055 1056isFirst(): boolean 1057 1058检查读取位置是否为第一行。 1059 1060**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1061 1062**返回值:** 1063 1064| 类型 | 说明 | 1065| ------- | ------------------------------------------------------------ | 1066| boolean | 返回true表示读取位置为第一行;返回false表示读取位置不是第一行。 | 1067 1068**示例:** 1069 1070```js 1071let kvStore; 1072try { 1073 let resultSet; 1074 kvStore.getResultSet('batch_test_string_key').then((result) => { 1075 console.log('getResultSet succeed.'); 1076 resultSet = result; 1077 }).catch((err) => { 1078 console.log('getResultSet failed: ' + err); 1079 }); 1080 const isfirst = resultSet.isFirst(); 1081 console.log("Check isFirst succeed:" + isfirst); 1082} catch (e) { 1083 console.log("Check isFirst failed: " + e); 1084} 1085``` 1086 1087### isLast 1088 1089isLast(): boolean 1090 1091检查读取位置是否为最后一行。 1092 1093**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1094 1095**返回值:** 1096 1097| 类型 | 说明 | 1098| ------- | ------------------------------------------------------------ | 1099| boolean | 返回true表示读取位置为最后一行;返回false表示读取位置不是最后一行。 | 1100 1101**示例:** 1102 1103```js 1104let kvStore; 1105try { 1106 let resultSet; 1107 kvStore.getResultSet('batch_test_string_key').then((result) => { 1108 console.log('getResultSet succeed.'); 1109 resultSet = result; 1110 }).catch((err) => { 1111 console.log('getResultSet failed: ' + err); 1112 }); 1113 const islast = resultSet.isLast(); 1114 console.log("Check isLast succeed: " + islast); 1115} catch (e) { 1116 console.log("Check isLast failed: " + e); 1117} 1118``` 1119 1120### isBeforeFirst 1121 1122isBeforeFirst(): boolean 1123 1124检查读取位置是否在第一行之前。 1125 1126**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1127 1128**返回值:** 1129 1130| 类型 | 说明 | 1131| ------- | ------------------------------------------------------------ | 1132| boolean | 返回true表示读取位置在第一行之前;返回false表示读取位置不在第一行之前。 | 1133 1134**示例:** 1135 1136```js 1137let kvStore; 1138try { 1139 let resultSet; 1140 kvStore.getResultSet('batch_test_string_key').then((result) => { 1141 console.log('getResultSet succeed.'); 1142 resultSet = result; 1143 }).catch((err) => { 1144 console.log('getResultSet failed: ' + err); 1145 }); 1146 const isbeforefirst = resultSet.isBeforeFirst(); 1147 console.log("Check isBeforeFirst succeed: " + isbeforefirst); 1148} catch (e) { 1149 console.log("Check isBeforeFirst failed: " + e); 1150} 1151``` 1152 1153### isAfterLast 1154 1155isAfterLast(): boolean 1156 1157检查读取位置是否在最后一行之后。 1158 1159**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1160 1161**返回值:** 1162 1163| 类型 | 说明 | 1164| ------- | ------------------------------------------------------------ | 1165| boolean | 返回true表示读取位置在最后一行之后;返回false表示读取位置不在最后一行之后。 | 1166 1167**示例:** 1168 1169```js 1170let kvStore; 1171try { 1172 let resultSet; 1173 kvStore.getResultSet('batch_test_string_key').then((result) => { 1174 console.log('getResultSet succeed.'); 1175 resultSet = result; 1176 }).catch((err) => { 1177 console.log('getResultSet failed: ' + err); 1178 }); 1179 const isafterlast = resultSet.isAfterLast(); 1180 console.log("Check isAfterLast succeed:" + isafterlast); 1181} catch (e) { 1182 console.log("Check isAfterLast failed: " + e); 1183} 1184``` 1185 1186### getEntry 1187 1188getEntry(): Entry 1189 1190从当前位置获取对应的键值对。 1191 1192**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1193 1194**返回值:** 1195 1196| 类型 | 说明 | 1197| --------------- | ------------ | 1198| [Entry](#entry) | 返回键值对。 | 1199 1200**示例:** 1201 1202```js 1203let kvStore; 1204try { 1205 let resultSet; 1206 kvStore.getResultSet('batch_test_string_key').then((result) => { 1207 console.log('getResultSet succeed.'); 1208 resultSet = result; 1209 }).catch((err) => { 1210 console.log('getResultSet failed: ' + err); 1211 }); 1212 const entry = resultSet.getEntry(); 1213 console.log("getEntry succeed:" + JSON.stringify(entry)); 1214} catch (e) { 1215 console.log("getEntry failed: " + e); 1216} 1217``` 1218 1219## Query 1220 1221使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。 1222 1223**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1224 1225### constructor 1226 1227constructor() 1228 1229用于创建Schema实例的构造函数。 1230 1231**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1232 1233### reset 1234 1235reset(): Query 1236 1237重置Query对象。 1238 1239**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1240 1241**返回值:** 1242 1243| 类型 | 说明 | 1244| -------------- | --------------------- | 1245| [Query](#query) | 返回重置的Query对象。 | 1246 1247**示例:** 1248 1249```js 1250try { 1251 let query = new distributedKVStore.Query(); 1252 query.equalTo("key", "value"); 1253 console.log("query is " + query.getSqlLike()); 1254 query.reset(); 1255 console.log("query is " + query.getSqlLike()); 1256 query = null; 1257} catch (e) { 1258 console.log("simply calls should be ok :" + e); 1259} 1260``` 1261 1262### equalTo 1263 1264equalTo(field: string, value: number|string|boolean): Query 1265 1266构造一个Query对象来查询具有指定字段的条目,其值等于指定的值。 1267 1268**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1269 1270**参数:** 1271 1272| 参数名 | 类型 | 必填 | 说明 | 1273| ----- | ------ | ---- | ----------------------- | 1274| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1275| value | number\|string\|boolean | 是 | 表示指定的值。| 1276 1277**返回值:** 1278 1279| 类型 | 说明 | 1280| -------------- | --------------- | 1281| [Query](#query) | 返回Query对象。 | 1282 1283**示例:** 1284 1285```js 1286try { 1287 let query = new distributedKVStore.Query(); 1288 query.equalTo("field", "value"); 1289 console.log(`query is ${query.getSqlLike()}`); 1290 query = null; 1291} catch (e) { 1292 console.error(`duplicated calls should be ok.ode is ${e.code},message is ${e.message}`); 1293} 1294``` 1295 1296### notEqualTo 1297 1298notEqualTo(field: string, value: number|string|boolean): Query 1299 1300构造一个Query对象以查询具有指定字段且值不等于指定值的条目。 1301 1302**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1303 1304**参数:** 1305 1306| 参数名 | 类型 | 必填 | 说明 | 1307| ----- | ------ | ---- | ----------------------- | 1308| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1309| value | number\|string\|boolean | 是 | 表示指定的值。| 1310 1311**返回值:** 1312 1313| 类型 | 说明 | 1314| -------------- | --------------- | 1315| [Query](#query) | 返回Query对象。 | 1316 1317**示例:** 1318 1319```js 1320try { 1321 let query = new distributedKVStore.Query(); 1322 query.notEqualTo("field", "value"); 1323 console.log(`query is ${query.getSqlLike()}`); 1324 query = null; 1325} catch (e) { 1326 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1327} 1328``` 1329 1330### greaterThan 1331 1332greaterThan(field: string, value: number|string|boolean): Query 1333 1334构造一个Query对象以查询具有大于指定值的指定字段的条目。 1335 1336**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1337 1338**参数:** 1339| 参数名 | 类型 | 必填 | 说明 | 1340| ----- | ------ | ---- | ----------------------- | 1341| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1342| value | number\|string\|boolean | 是 | 表示指定的值。| 1343 1344**返回值:** 1345 1346| 类型 | 说明 | 1347| -------------- | --------------- | 1348| [Query](#query) | 返回Query对象。 | 1349 1350**示例:** 1351 1352```js 1353try { 1354 let query = new distributedKVStore.Query(); 1355 query.greaterThan("field", "value"); 1356 console.log(`query is ${query.getSqlLike()}`); 1357 query = null; 1358} catch (e) { 1359 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1360} 1361``` 1362 1363### lessThan 1364 1365lessThan(field: string, value: number|string): Query 1366 1367构造一个Query对象以查询具有小于指定值的指定字段的条目。 1368 1369**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1370 1371**参数:** 1372 1373 1374| 参数名 | 类型 | 必填 | 说明 | 1375| ----- | ------ | ---- | ----------------------- | 1376| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1377| value | number\|string | 是 | 表示指定的值。| 1378 1379**返回值:** 1380 1381| 类型 | 说明 | 1382| -------------- | --------------- | 1383| [Query](#query) | 返回Query对象。 | 1384 1385**示例:** 1386 1387```js 1388try { 1389 let query = new distributedKVStore.Query(); 1390 query.lessThan("field", "value"); 1391 console.log(`query is ${query.getSqlLike()}`); 1392 query = null; 1393} catch (e) { 1394 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1395} 1396``` 1397 1398### greaterThanOrEqualTo 1399 1400greaterThanOrEqualTo(field: string, value: number|string): Query 1401 1402构造一个Query对象以查询具有指定字段且值大于或等于指定值的条目。 1403 1404**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1405 1406**参数:** 1407 1408 1409| 参数名 | 类型 | 必填 | 说明 | 1410| ----- | ------ | ---- | ----------------------- | 1411| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1412| value | number\|string | 是 | 表示指定的值。| 1413 1414**返回值:** 1415 1416| 类型 | 说明 | 1417| -------------- | --------------- | 1418| [Query](#query) | 返回Query对象。 | 1419 1420**示例:** 1421 1422```js 1423try { 1424 let query = new distributedKVStore.Query(); 1425 query.greaterThanOrEqualTo("field", "value"); 1426 console.log(`query is ${query.getSqlLike()}`); 1427 query = null; 1428} catch (e) { 1429 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1430} 1431``` 1432 1433### lessThanOrEqualTo 1434 1435lessThanOrEqualTo(field: string, value: number|string): Query 1436 1437构造一个Query对象以查询具有指定字段且值小于或等于指定值的条目。 1438 1439**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1440 1441**参数:** 1442 1443 1444| 参数名 | 类型 | 必填 | 说明 | 1445| ----- | ------ | ---- | ----------------------- | 1446| fieId | string | 是 |表示指定字段,不能包含' ^ '。 | 1447| value | number\|string | 是 | 表示指定的值。| 1448 1449**返回值:** 1450 1451| 类型 | 说明 | 1452| -------------- | --------------- | 1453| [Query](#query) | 返回Query对象。 | 1454 1455**示例:** 1456 1457```js 1458try { 1459 let query = new distributedKVStore.Query(); 1460 query.lessThanOrEqualTo("field", "value"); 1461 console.log(`query is ${query.getSqlLike()}`); 1462 query = null; 1463} catch (e) { 1464 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1465} 1466``` 1467 1468### isNull 1469 1470isNull(field: string): Query 1471 1472构造一个Query对象以查询具有值为null的指定字段的条目。 1473 1474**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1475 1476**参数:** 1477 1478| 参数名 | 类型 | 必填 | 说明 | 1479| ------ | -------- | ---- | ----------------------------- | 1480| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1481 1482**返回值:** 1483 1484| 类型 | 说明 | 1485| -------------- | --------------- | 1486| [Query](#query) | 返回Query对象。 | 1487 1488**示例:** 1489 1490```js 1491try { 1492 let query = new distributedKVStore.Query(); 1493 query.isNull("field"); 1494 console.log(`query is ${query.getSqlLike()}`); 1495 query = null; 1496} catch (e) { 1497 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1498} 1499``` 1500 1501### inNumber 1502 1503inNumber(field: string, valueList: number[]): Query 1504 1505构造一个Query对象以查询具有指定字段的条目,其值在指定的值列表中。 1506 1507**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1508 1509**参数:** 1510 1511| 参数名 | 类型 | 必填 | 说明 | 1512| --------- | -------- | ---- | ----------------------------- | 1513| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1514| valueList | number[] | 是 | 表示指定的值列表。 | 1515 1516**返回值:** 1517 1518| 类型 | 说明 | 1519| -------------- | --------------- | 1520| [Query](#query) | 返回Query对象。 | 1521 1522**示例:** 1523 1524```js 1525try { 1526 let query = new distributedKVStore.Query(); 1527 query.inNumber("field", [0, 1]); 1528 console.log(`query is ${query.getSqlLike()}`); 1529 query = null; 1530} catch (e) { 1531 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1532} 1533``` 1534 1535### inString 1536 1537inString(field: string, valueList: string[]): Query 1538 1539构造一个Query对象以查询具有指定字段的条目,其值在指定的字符串值列表中。 1540 1541**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1542 1543**参数:** 1544 1545| 参数名 | 类型 | 必填 | 说明 | 1546| --------- | -------- | ---- | ----------------------------- | 1547| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1548| valueList | string[] | 是 | 表示指定的字符串值列表。 | 1549 1550**返回值:** 1551 1552| 类型 | 说明 | 1553| -------------- | --------------- | 1554| [Query](#query) | 返回Query对象。 | 1555 1556**示例:** 1557 1558```js 1559try { 1560 let query = new distributedKVStore.Query(); 1561 query.inString("field", ['test1', 'test2']); 1562 console.log(`query is ${query.getSqlLike()}`); 1563 query = null; 1564} catch (e) { 1565 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1566} 1567``` 1568 1569### notInNumber 1570 1571notInNumber(field: string, valueList: number[]): Query 1572 1573构造一个Query对象以查询具有指定字段的条目,该字段的值不在指定的值列表中。 1574 1575**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1576 1577**参数:** 1578 1579| 参数名 | 类型 | 必填 | 说明 | 1580| --------- | -------- | ---- | ----------------------------- | 1581| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1582| valueList | number[] | 是 | 表示指定的值列表。 | 1583 1584**返回值:** 1585 1586| 类型 | 说明 | 1587| -------------- | --------------- | 1588| [Query](#query) | 返回Query对象。 | 1589 1590**示例:** 1591 1592```js 1593try { 1594 let query = new distributedKVStore.Query(); 1595 query.notInNumber("field", [0, 1]); 1596 console.log(`query is ${query.getSqlLike()}`); 1597 query = null; 1598} catch (e) { 1599 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1600} 1601``` 1602 1603### notInString 1604 1605notInString(field: string, valueList: string[]): Query 1606 1607构造一个Query对象以查询具有指定字段且值不在指定字符串值列表中的条目。 1608 1609**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1610 1611**参数:** 1612 1613| 参数名 | 类型 | 必填 | 说明 | 1614| --------- | -------- | ---- | ----------------------------- | 1615| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1616| valueList | string[] | 是 | 表示指定的字符串值列表。 | 1617 1618**返回值:** 1619 1620| 类型 | 说明 | 1621| -------------- | --------------- | 1622| [Query](#query) | 返回Query对象。 | 1623 1624**示例:** 1625 1626```js 1627try { 1628 let query = new distributedKVStore.Query(); 1629 query.notInString("field", ['test1', 'test2']); 1630 console.log(`query is ${query.getSqlLike()}`); 1631 query = null; 1632} catch (e) { 1633 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1634} 1635``` 1636 1637### like 1638 1639like(field: string, value: string): Query 1640 1641构造一个Query对象以查询具有与指定字符串值相似的指定字段的条目。 1642 1643**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1644 1645**参数:** 1646 1647| 参数名 | 类型 | 必填 | 说明 | 1648| ------ | -------- | ---- | ----------------------------- | 1649| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1650| value | string | 是 | 表示指定的字符串值。 | 1651 1652**返回值:** 1653 1654| 类型 | 说明 | 1655| -------------- | --------------- | 1656| [Query](#query) | 返回Query对象。 | 1657 1658**示例:** 1659 1660```js 1661try { 1662 let query = new distributedKVStore.Query(); 1663 query.like("field", "value"); 1664 console.log(`query is ${query.getSqlLike()}`); 1665 query = null; 1666} catch (e) { 1667 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1668} 1669``` 1670 1671### unlike 1672 1673unlike(field: string, value: string): Query 1674 1675构造一个Query对象以查询具有与指定字符串值不相似的指定字段的条目。 1676 1677**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1678 1679**参数:** 1680 1681| 参数名 | 类型 | 必填 | 说明 | 1682| ------ | -------- | ---- | ----------------------------- | 1683| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1684| value | string | 是 | 表示指定的字符串值。 | 1685 1686**返回值:** 1687 1688| 类型 | 说明 | 1689| -------------- | --------------- | 1690| [Query](#query) | 返回Query对象。 | 1691 1692**示例:** 1693 1694```js 1695try { 1696 let query = new distributedKVStore.Query(); 1697 query.unlike("field", "value"); 1698 console.log(`query is ${query.getSqlLike()}`); 1699 query = null; 1700} catch (e) { 1701 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1702} 1703``` 1704 1705### and 1706 1707and(): Query 1708 1709构造一个带有与条件的查询对象。 1710 1711**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1712 1713**返回值:** 1714 1715| 类型 | 说明 | 1716| -------------- | -------------- | 1717| [Query](#query) | 返回查询对象。 | 1718 1719**示例:** 1720 1721```js 1722try { 1723 let query = new distributedKVStore.Query(); 1724 query.notEqualTo("field", "value1"); 1725 query.and(); 1726 query.notEqualTo("field", "value2"); 1727 console.log("query is " + query.getSqlLike()); 1728 query = null; 1729} catch (e) { 1730 console.log("duplicated calls should be ok :" + e); 1731} 1732``` 1733 1734### or 1735 1736or(): Query 1737 1738构造一个带有或条件的Query对象。 1739 1740**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1741 1742**返回值:** 1743 1744| 类型 | 说明 | 1745| -------------- | -------------- | 1746| [Query](#query) | 返回查询对象。 | 1747 1748**示例:** 1749 1750```js 1751try { 1752 let query = new distributedKVStore.Query(); 1753 query.notEqualTo("field", "value1"); 1754 query.or(); 1755 query.notEqualTo("field", "value2"); 1756 console.log("query is " + query.getSqlLike()); 1757 query = null; 1758} catch (e) { 1759 console.log("duplicated calls should be ok :" + e); 1760} 1761``` 1762 1763### orderByAsc 1764 1765orderByAsc(field: string): Query 1766 1767构造一个Query对象,将查询结果按升序排序。 1768 1769**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1770 1771**参数:** 1772 1773| 参数名 | 类型 | 必填 | 说明 | 1774| ------ | -------- | ---- | ----------------------------- | 1775| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1776 1777**返回值:** 1778 1779| 类型 | 说明 | 1780| -------------- | --------------- | 1781| [Query](#query) | 返回Query对象。 | 1782 1783**示例:** 1784 1785```js 1786try { 1787 let query = new distributedKVStore.Query(); 1788 query.notEqualTo("field", "value"); 1789 query.orderByAsc("field"); 1790 console.log(`query is ${query.getSqlLike()}`); 1791 query = null; 1792} catch (e) { 1793 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1794} 1795``` 1796 1797### orderByDesc 1798 1799orderByDesc(field: string): Query 1800 1801构造一个Query对象,将查询结果按降序排序。 1802 1803**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1804 1805**参数:** 1806 1807| 参数名 | 类型 | 必填 | 说明 | 1808| ------ | -------- | ---- | ----------------------------- | 1809| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1810 1811**返回值:** 1812 1813| 类型 | 说明 | 1814| -------------- | --------------- | 1815| [Query](#query) | 返回Query对象。 | 1816 1817**示例:** 1818 1819```js 1820try { 1821 let query = new distributedKVStore.Query(); 1822 query.notEqualTo("field", "value"); 1823 query.orderByDesc("field"); 1824 console.log(`query is ${query.getSqlLike()}`); 1825 query = null; 1826} catch (e) { 1827 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1828} 1829``` 1830 1831### limit 1832 1833limit(total: number, offset: number): Query 1834 1835构造一个Query对象来指定结果的数量和开始位置。 1836 1837**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1838 1839**参数:** 1840 1841| 参数名 | 类型 | 必填 | 说明 | 1842| ------ | -------- | ---- | ------------------ | 1843| total | number | 是 | 表示指定的结果数。 | 1844| offset | number | 是 | 表示起始位置。 | 1845 1846**返回值:** 1847 1848| 类型 | 说明 | 1849| -------------- | --------------- | 1850| [Query](#query) | 返回Query对象。 | 1851 1852**示例:** 1853 1854```js 1855let total = 10; 1856let offset = 1; 1857try { 1858 let query = new distributedKVStore.Query(); 1859 query.notEqualTo("field", "value"); 1860 query.limit(total, offset); 1861 console.log(`query is ${query.getSqlLike()}`); 1862 query = null; 1863} catch (e) { 1864 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1865} 1866``` 1867 1868### isNotNull 1869 1870isNotNull(field: string): Query 1871 1872构造一个Query对象以查询具有值不为null的指定字段的条目。 1873 1874**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1875 1876**参数:** 1877 1878| 参数名 | 类型 | 必填 | 说明 | 1879| ------ | -------- | ---- | ----------------------------- | 1880| fieId | string | 是 | 表示指定字段,不能包含' ^ '。 | 1881 1882**返回值:** 1883 1884| 类型 | 说明 | 1885| -------------- | --------------- | 1886| [Query](#query) | 返回Query对象。 | 1887 1888**示例:** 1889 1890```js 1891try { 1892 let query = new distributedKVStore.Query(); 1893 query.isNotNull("field"); 1894 console.log(`query is ${query.getSqlLike()}`); 1895 query = null; 1896} catch (e) { 1897 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1898} 1899``` 1900 1901### beginGroup 1902 1903beginGroup(): Query 1904 1905创建一个带有左括号的查询条件组。 1906 1907**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1908 1909**返回值:** 1910 1911| 类型 | 说明 | 1912| -------------- | --------------- | 1913| [Query](#query) | 返回Query对象。 | 1914 1915**示例:** 1916 1917```js 1918try { 1919 let query = new distributedKVStore.Query(); 1920 query.beginGroup(); 1921 query.isNotNull("field"); 1922 query.endGroup(); 1923 console.log("query is " + query.getSqlLike()); 1924 query = null; 1925} catch (e) { 1926 console.log("duplicated calls should be ok :" + e); 1927} 1928``` 1929 1930### endGroup 1931 1932endGroup(): Query 1933 1934创建一个带有右括号的查询条件组。 1935 1936**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1937 1938**返回值:** 1939 1940| 类型 | 说明 | 1941| -------------- | --------------- | 1942| [Query](#query) | 返回Query对象。 | 1943 1944**示例:** 1945 1946```js 1947try { 1948 let query = new distributedKVStore.Query(); 1949 query.beginGroup(); 1950 query.isNotNull("field"); 1951 query.endGroup(); 1952 console.log("query is " + query.getSqlLike()); 1953 query = null; 1954} catch (e) { 1955 console.log("duplicated calls should be ok :" + e); 1956} 1957``` 1958 1959### prefixKey 1960 1961prefixKey(prefix: string): Query 1962 1963创建具有指定键前缀的查询条件。 1964 1965**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 1966 1967**参数:** 1968 1969| 参数名 | 类型 | 必填 | 说明 | 1970| ------ | -------- | ---- | ------------------ | 1971| prefix | string | 是 | 表示指定的键前缀。 | 1972 1973**返回值:** 1974 1975| 类型 | 说明 | 1976| -------------- | --------------- | 1977| [Query](#query) | 返回Query对象。 | 1978 1979**示例:** 1980 1981```js 1982try { 1983 let query = new distributedKVStore.Query(); 1984 query.prefixKey("$.name"); 1985 query.prefixKey("0"); 1986 console.log(`query is ${query.getSqlLike()}`); 1987 query = null; 1988} catch (e) { 1989 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 1990} 1991``` 1992 1993### setSuggestIndex 1994 1995setSuggestIndex(index: string): Query 1996 1997设置一个指定的索引,将优先用于查询。 1998 1999**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2000 2001**参数:** 2002 2003| 参数名 | 类型 | 必填 | 说明 | 2004| ------ | -------- | ---- | ------------------ | 2005| index | string | 是 | 指示要设置的索引。 | 2006 2007**返回值:** 2008 2009| 类型 | 说明 | 2010| -------------- | --------------- | 2011| [Query](#query) | 返回Query对象。 | 2012 2013**示例:** 2014 2015```js 2016try { 2017 let query = new distributedKVStore.Query(); 2018 query.setSuggestIndex("$.name"); 2019 query.setSuggestIndex("0"); 2020 console.log(`query is ${query.getSqlLike()}`); 2021 query = null; 2022} catch (e) { 2023 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 2024} 2025``` 2026 2027### deviceId 2028 2029deviceId(deviceId:string):Query 2030 2031添加设备ID作为key的前缀。 2032 2033**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2034 2035**参数:** 2036 2037| 参数名 | 类型 | 必填 | 说明 | 2038| -------- | -------- | ---- | ------------------ | 2039| deviceId | string | 是 | 指示查询的设备ID。 | 2040 2041**返回值:** 2042 2043| 类型 | 说明 | 2044| -------------- | --------------- | 2045| [Query](#query) | 返回Query对象。 | 2046 2047**示例:** 2048 2049```js 2050try { 2051 let query = new distributedKVStore.Query(); 2052 query.deviceId("deviceId"); 2053 console.log(`query is ${query.getSqlLike()}`); 2054} catch (e) { 2055 console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`); 2056} 2057``` 2058 2059### getSqlLike 2060 2061getSqlLike():string 2062 2063获取Query对象的查询语句。 2064 2065**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2066 2067**返回值:** 2068 2069| 类型 | 说明 | 2070| ------ | ------------------------------------ | 2071| string | 返回一个字段列中包含对应子串的结果。 | 2072 2073**示例:** 2074 2075```js 2076try { 2077 let query = new distributedKVStore.Query(); 2078 let sql1 = query.getSqlLike(); 2079 console.log(`GetSqlLike sql= ${sql1}`); 2080} catch (e) { 2081 console.log("duplicated calls should be ok : " + e); 2082} 2083``` 2084 2085## SingleKVStore 2086 2087SingleKVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。 2088 2089在调用SingleKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个SingleKVStore实例。 2090 2091### put 2092 2093put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback<void>): void 2094 2095添加指定类型键值对到数据库,使用callback异步回调。 2096 2097**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2098 2099**参数:** 2100 2101| 参数名 | 类型 | 必填 | 说明 | 2102| ----- | ------ | ---- | ----------------------- | 2103| key | string | 是 |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2104| value | Uint8Array \| string \| number \| boolean | 是 |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。 | 2105| callback | AsyncCallback<void> | 是 |回调函数。 | 2106 2107**错误码:** 2108 2109以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2110 2111| **错误码ID** | **错误信息** | 2112| ------------ | -------------------------------------- | 2113| 15100003 | Database corrupted. | 2114| 15100005 | Database or result set already closed. | 2115 2116**示例:** 2117 2118```js 2119let kvStore; 2120const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2121const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2122try { 2123 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { 2124 if (err != undefined) { 2125 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2126 return; 2127 } 2128 console.log("Succeeded in putting"); 2129 }); 2130} catch (e) { 2131 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2132} 2133``` 2134 2135### put 2136 2137put(key: string, value: Uint8Array | string | number | boolean): Promise<void> 2138 2139添加指定类型键值对到数据库,使用Promise异步回调。 2140 2141**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2142 2143**参数:** 2144 2145| 参数名 | 类型 | 必填 | 说明 | 2146| ----- | ------ | ---- | ----------------------- | 2147| key | string | 是 |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2148| value | Uint8Array \| string \| number \| boolean | 是 |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。 | 2149 2150**返回值:** 2151 2152| 类型 | 说明 | 2153| ------------------- | ------------------------- | 2154| Promise<void> | 无返回结果的Promise对象。 | 2155 2156**错误码:** 2157 2158以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2159 2160| **错误码ID** | **错误信息** | 2161| ------------ | -------------------------------------- | 2162| 15100003 | Database corrupted. | 2163| 15100005 | Database or result set already closed. | 2164 2165**示例:** 2166 2167```js 2168let kvStore; 2169const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2170const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2171try { 2172 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { 2173 console.log(`Succeeded in putting.data=${data}`); 2174 }).catch((err) => { 2175 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2176 }); 2177} catch (e) { 2178 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2179} 2180``` 2181 2182### putBatch 2183 2184putBatch(entries: Entry[], callback: AsyncCallback<void>): void 2185 2186批量插入键值对到SingleKVStore数据库中,使用callback异步回调。 2187 2188**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2189 2190**参数:** 2191 2192| 参数名 | 类型 | 必填 | 说明 | 2193| -------- | ------------------------ | ---- | ------------------------ | 2194| entries | [Entry](#entry)[] | 是 | 表示要批量插入的键值对。 | 2195| callback | AsyncCallback<void> | 是 | 回调函数。 | 2196 2197**错误码:** 2198 2199以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2200 2201| **错误码ID** | **错误信息** | 2202| ------------ | -------------------------------------- | 2203| 15100003 | Database corrupted. | 2204| 15100005 | Database or result set already closed. | 2205 2206**示例:** 2207 2208```js 2209let kvStore; 2210try { 2211 let entries = []; 2212 for (var i = 0; i < 10; i++) { 2213 var key = 'batch_test_string_key'; 2214 var entry = { 2215 key: key + i, 2216 value: { 2217 type: distributedKVStore.ValueType.STRING, 2218 value: 'batch_test_string_value' 2219 } 2220 } 2221 entries.push(entry); 2222 } 2223 console.log(`entries: ${entries}`); 2224 kvStore.putBatch(entries, async function (err, data) { 2225 if (err != undefined) { 2226 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 2227 return; 2228 } 2229 console.log('Succeeded in putting Batch'); 2230 kvStore.getEntries('batch_test_string_key', function (err, entries) { 2231 if (err != undefined) { 2232 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 2233 } 2234 console.log('Succeeded in getting Entries'); 2235 console.log(`entries.length: ${entries.length}`); 2236 console.log(`entries[0]: ${entries[0]}`); 2237 }); 2238 }); 2239} catch (e) { 2240 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 2241} 2242``` 2243 2244### putBatch 2245 2246putBatch(entries: Entry[]): Promise<void> 2247 2248批量插入键值对到SingleKVStore数据库中,使用Promise异步回调。 2249 2250**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2251 2252**参数:** 2253 2254| 参数名 | 类型 | 必填 | 说明 | 2255| ------- | ----------------- | ---- | ------------------------ | 2256| entries | [Entry](#entry)[] | 是 | 表示要批量插入的键值对。 | 2257 2258**返回值:** 2259 2260| 类型 | 说明 | 2261| ------------------- | ------------------------- | 2262| Promise<void> | 无返回结果的Promise对象。 | 2263 2264**错误码:** 2265 2266以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2267 2268| **错误码ID** | **错误信息** | 2269| ------------ | -------------------------------------- | 2270| 15100003 | Database corrupted. | 2271| 15100005 | Database or result set already closed. | 2272 2273**示例:** 2274 2275```js 2276let kvStore; 2277try { 2278 let entries = []; 2279 for (var i = 0; i < 10; i++) { 2280 var key = 'batch_test_string_key'; 2281 var entry = { 2282 key: key + i, 2283 value: { 2284 type: distributedKVStore.ValueType.STRING, 2285 value: 'batch_test_string_value' 2286 } 2287 } 2288 entries.push(entry); 2289 } 2290 console.log(`entries: ${entries}`); 2291 kvStore.putBatch(entries).then(async (entries) => { 2292 console.log('Succeeded in putting Batch'); 2293 kvStore.getEntries('batch_test_string_key').then((entries) => { 2294 console.log('Succeeded in getting Entries'); 2295 console.log(`PutBatch ${entries}`); 2296 }).catch((err) => { 2297 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 2298 }); 2299 }).catch((err) => { 2300 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 2301 }); 2302} catch (e) { 2303 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 2304} 2305``` 2306 2307### putBatch 2308 2309putBatch(value: Array<ValuesBucket>, callback: AsyncCallback<void>): void 2310 2311将值写入SingleKVStore数据库,使用callback异步回调。 2312 2313**系统接口:** 此接口为系统接口。 2314 2315**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2316 2317**参数:** 2318 2319| 参数名 | 类型 | 必填 | 说明 | 2320| -------- | ------------------------------------------------------------ | ---- | ------------------ | 2321| value | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 表示要插入的数据。 | 2322| callback | AsyncCallback<void> | 是 | 回调函数。 | 2323 2324**错误码:** 2325 2326以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2327 2328| **错误码ID** | **错误信息** | 2329| ------------ | -------------------------------------- | 2330| 15100003 | Database corrupted. | 2331| 15100005 | Database or result set already closed. | 2332 2333**示例:** 2334 2335```js 2336let kvStore; 2337try { 2338 let v8Arr = []; 2339 let arr = new Uint8Array([4, 5, 6, 7]); 2340 let vb1 = { key: "name_1", value: 32 } 2341 let vb2 = { key: "name_2", value: arr }; 2342 let vb3 = { key: "name_3", value: "lisi" }; 2343 2344 v8Arr.push(vb1); 2345 v8Arr.push(vb2); 2346 v8Arr.push(vb3); 2347 kvStore.putBatch(v8Arr, async function (err, data) { 2348 if (err != undefined) { 2349 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 2350 return; 2351 } 2352 console.log('Succeeded in putting batch'); 2353 }) 2354} catch (e) { 2355 console.error(`Fail to put batch.code is ${e.code},message is ${e.message}`); 2356} 2357``` 2358 2359### putBatch 2360 2361putBatch(value: Array<ValuesBucket>): Promise<void> 2362 2363将valuesbucket类型的值写入SingleKVStore数据库,使用Promise异步回调。 2364 2365**系统接口:** 此接口为系统接口。 2366 2367**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2368 2369**参数:** 2370 2371| 参数名 | 类型 | 必填 | 说明 | 2372| ------ | ------------------------------------------------------------ | ---- | ------------------ | 2373| value | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 表示要插入的数据。 | 2374 2375**返回值:** 2376 2377| 类型 | 说明 | 2378| ------------------- | ------------------------- | 2379| Promise<void> | 五返回结果的Promise对象。 | 2380 2381**错误码:** 2382 2383以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2384 2385| **错误码ID** | **错误信息** | 2386| ------------ | -------------------------------------- | 2387| 15100003 | Database corrupted. | 2388| 15100005 | Database or result set already closed. | 2389 2390**示例:** 2391 2392```js 2393let kvStore; 2394try { 2395 let v8Arr = []; 2396 let arr = new Uint8Array([4, 5, 6, 7]); 2397 let vb1 = { key: "name_1", value: 32 } 2398 let vb2 = { key: "name_2", value: arr }; 2399 let vb3 = { key: "name_3", value: "lisi" }; 2400 2401 v8Arr.push(vb1); 2402 v8Arr.push(vb2); 2403 v8Arr.push(vb3); 2404 kvStore.putBatch(v8Arr).then(async (data) => { 2405 console.log(`Succeeded in putting patch`); 2406 }).catch((err) => { 2407 console.error(`putBatch fail.code is ${err.code},message is ${err.message}`); 2408 }); 2409} catch (e) { 2410 console.error(`putBatch fail.code is ${e.code},message is ${e.message}`); 2411} 2412``` 2413 2414### delete 2415 2416delete(key: string, callback: AsyncCallback<void>): void 2417 2418从数据库中删除指定键值的数据,使用callback异步回调。 2419 2420**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2421 2422**参数:** 2423 2424| 参数名 | 类型 | 必填 | 说明 | 2425| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 2426| key | string | 是 | 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2427| callback | AsyncCallback<void> | 是 | 回调函数。 | 2428 2429**错误码:** 2430 2431以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2432 2433| **错误码ID** | **错误信息** | 2434| ------------ | -------------------------------------- | 2435| 15100003 | Database corrupted. | 2436| 15100005 | Database or result set already closed. | 2437 2438**示例:** 2439 2440```js 2441let kvStore; 2442const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2443const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2444try { 2445 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { 2446 if (err != undefined) { 2447 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2448 return; 2449 } 2450 console.log('Succeeded in putting'); 2451 kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err, data) { 2452 if (err != undefined) { 2453 console.error(`Fail to delete.code is ${err.code},message is ${err.message}`); 2454 return; 2455 } 2456 console.log('Succeeded in deleting'); 2457 }); 2458 }); 2459} catch (e) { 2460 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2461} 2462``` 2463 2464### delete 2465 2466delete(key: string): Promise<void> 2467 2468从数据库中删除指定键值的数据,使用Promise异步回调。 2469 2470**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2471 2472**参数:** 2473 2474| 参数名 | 类型 | 必填 | 说明 | 2475| ------ | -------- | ---- | ------------------------------------------------------------ | 2476| key | string | 是 | 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2477 2478**返回值:** 2479 2480| 类型 | 说明 | 2481| ------------------- | ------------------------- | 2482| Promise<void> | 无返回结果的Promise对象。 | 2483 2484**错误码:** 2485 2486以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2487 2488| **错误码ID** | **错误信息** | 2489| ------------ | -------------------------------------- | 2490| 15100003 | Database corrupted. | 2491| 15100005 | Database or result set already closed. | 2492 2493**示例:** 2494 2495```js 2496let kvStore; 2497const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2498const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2499try { 2500 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { 2501 console.log(`Succeeded in putting: ${data}`); 2502 kvStore.delete(KEY_TEST_STRING_ELEMENT).then((data) => { 2503 console.log('Succeeded in deleting'); 2504 }).catch((err) => { 2505 console.error(`Fail to delete.code is ${err.code},message is ${err.message}`); 2506 }); 2507 }).catch((err) => { 2508 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2509 }); 2510} catch (e) { 2511 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2512} 2513``` 2514 2515### delete 2516 2517delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<void>) 2518 2519从数据库中删除符合predicates条件的键值对,使用callback异步回调。 2520 2521**系统接口:** 此接口为系统接口。 2522 2523**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 2524 2525**参数:** 2526 2527| 参数名 | 类型 | 必填 | 说明 | 2528| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 2529| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 2530| callback | AsyncCallback<void> | 是 | 回调函数。 | 2531 2532**错误码:** 2533 2534以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2535 2536| **错误码ID** | **错误信息** | 2537| ------------ | -------------------------------------- | 2538| 15100003 | Database corrupted. | 2539| 15100005 | Database or result set already closed. | 2540 2541**示例:** 2542 2543```js 2544import dataSharePredicates from '@ohos.data.dataSharePredicates'; 2545let kvStore; 2546try { 2547 let predicates = new dataSharePredicates.DataSharePredicates(); 2548 kvStore.delete(predicates, function (err, data) { 2549 if (err == undefined) { 2550 console.log('Succeeded in deleting'); 2551 } else { 2552 console.error(`Fail to delete.code is ${err.code},message is ${err.message}`); 2553 } 2554 }); 2555} catch (e) { 2556 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2557} 2558``` 2559 2560### delete 2561 2562delete(predicates: dataSharePredicates.DataSharePredicates): Promise<void> 2563 2564从数据库中删除符合predicates条件的键值对,使用Promise异步回调。 2565 2566**系统接口:** 此接口为系统接口。 2567 2568**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 2569 2570**参数:** 2571 2572| 参数名 | 类型 | 必填 | 说明 | 2573| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 2574| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 2575 2576**返回值:** 2577 2578| 类型 | 说明 | 2579| ------------------- | ------------------------- | 2580| Promise<void> | 无返回结果的Promise对象。 | 2581 2582**错误码:** 2583 2584以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2585 2586| **错误码ID** | **错误信息** | 2587| ------------ | -------------------------------------- | 2588| 15100003 | Database corrupted. | 2589| 15100005 | Database or result set already closed. | 2590 2591**示例:** 2592 2593```js 2594import dataSharePredicates from '@ohos.data.dataSharePredicates'; 2595 2596let kvStore; 2597try { 2598 let predicates = new dataSharePredicates.DataSharePredicates(); 2599 let arr = ["name"]; 2600 predicates.inKeys(arr); 2601 kvStore.put("name", "bob").then((data) => { 2602 console.log(`Succeeded in putting: ${data}`); 2603 kvStore.delete(predicates).then((data) => { 2604 console.log('Succeeded in deleting'); 2605 }).catch((err) => { 2606 console.error(`Fail to delete.code is ${err.code},message is ${err.message}`); 2607 }); 2608 }).catch((err) => { 2609 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2610 }); 2611} catch (e) { 2612 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2613} 2614``` 2615 2616### deleteBatch 2617 2618deleteBatch(keys: string[], callback: AsyncCallback<void>): void 2619 2620批量删除SingleKVStore数据库中的键值对,使用callback异步回调。 2621 2622**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2623 2624**参数:** 2625 2626| 参数名 | 类型 | 必填 | 说明 | 2627| -------- | ------------------------- | ---- | ------------------------ | 2628| keys | string[] | 是 | 表示要批量删除的键值对。 | 2629| callback | AsyncCallback<void> | 是 | 回调函数。 | 2630 2631**错误码:** 2632 2633以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2634 2635| **错误码ID** | **错误信息** | 2636| ------------ | -------------------------------------- | 2637| 15100003 | Database corrupted. | 2638| 15100005 | Database or result set already closed. | 2639 2640**示例:** 2641 2642```js 2643let kvStore; 2644try { 2645 let entries = []; 2646 let keys = []; 2647 for (var i = 0; i < 5; i++) { 2648 var key = 'batch_test_string_key'; 2649 var entry = { 2650 key: key + i, 2651 value: { 2652 type: distributedKVStore.ValueType.STRING, 2653 value: 'batch_test_string_value' 2654 } 2655 } 2656 entries.push(entry); 2657 keys.push(key + i); 2658 } 2659 console.log(`entries: ${entries}`); 2660 kvStore.putBatch(entries, async function (err, data) { 2661 if (err != undefined) { 2662 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 2663 return; 2664 } 2665 console.log('Succeeded in putting Batch'); 2666 kvStore.deleteBatch(keys, async function (err, data) { 2667 if (err != undefined) { 2668 console.error(`Fail to delete Batch.code is ${err.code},message is ${err.message}`); 2669 return; 2670 } 2671 console.log('Succeeded in deleting Batch'); 2672 }); 2673 }); 2674} catch (e) { 2675 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2676} 2677``` 2678 2679### deleteBatch 2680 2681deleteBatch(keys: string[]): Promise<void> 2682 2683批量删除SingleKVStore数据库中的键值对,使用Promise异步回调。 2684 2685**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2686 2687**参数:** 2688 2689| 参数名 | 类型 | 必填 | 说明 | 2690| ------ | -------- | ---- | ------------------------ | 2691| keys | string[] | 是 | 表示要批量删除的键值对。 | 2692 2693**返回值:** 2694 2695| 类型 | 说明 | 2696| ------------------- | ------------------------- | 2697| Promise<void> | 无返回结果的Promise对象。 | 2698 2699**错误码:** 2700 2701以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2702 2703| **错误码ID** | **错误信息** | 2704| ------------ | -------------------------------------- | 2705| 15100003 | Database corrupted. | 2706| 15100005 | Database or result set already closed. | 2707 2708**示例:** 2709 2710```js 2711let kvStore; 2712try { 2713 let entries = []; 2714 let keys = []; 2715 for (var i = 0; i < 5; i++) { 2716 var key = 'batch_test_string_key'; 2717 var entry = { 2718 key: key + i, 2719 value: { 2720 type: distributedKVStore.ValueType.STRING, 2721 value: 'batch_test_string_value' 2722 } 2723 } 2724 entries.push(entry); 2725 keys.push(key + i); 2726 } 2727 console.log(`entries: ${entries}`); 2728 kvStore.putBatch(entries).then(async (data) => { 2729 console.log('Succeeded in putting Batch'); 2730 kvStore.deleteBatch(keys).then((err) => { 2731 console.log('Succeeded in deleting Batch'); 2732 }).catch((err) => { 2733 console.error(`Fail to delete Batch.code is ${err.code},message is ${err.message}`); 2734 }); 2735 }).catch((err) => { 2736 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 2737 }); 2738} catch (e) { 2739 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 2740} 2741``` 2742 2743### removeDeviceData 2744 2745removeDeviceData(deviceId: string, callback: AsyncCallback<void>): void 2746 2747删除指定设备的数据,使用callback异步回调。 2748 2749**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 2750 2751**参数:** 2752 2753| 参数名 | 类型 | 必填 | 说明 | 2754| -------- | ------------------------- | ---- | ---------------------- | 2755| deviceId | string | 是 | 表示要删除设备的名称。 | 2756| callback | AsyncCallback<void> | 是 | 回调函数。 | 2757 2758**错误码:** 2759 2760以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2761 2762| **错误码ID** | **错误信息** | 2763| ------------ | -------------------------------------- | 2764| 15100005 | Database or result set already closed. | 2765 2766**示例:** 2767 2768```js 2769let kvStore; 2770const KEY_TEST_STRING_ELEMENT = 'key_test_string_2'; 2771const VALUE_TEST_STRING_ELEMENT = 'value-string-002'; 2772try { 2773 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err, data) { 2774 console.log('Succeeded in putting data'); 2775 const deviceid = 'no_exist_device_id'; 2776 kvStore.removeDeviceData(deviceid, async function (err, data) { 2777 if (err == undefined) { 2778 console.log('succeeded in removing device data'); 2779 } else { 2780 console.error(`Fail to remove device data.code is ${err.code},message is ${err.message} `); 2781 kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err, data) { 2782 console.log('Succeeded in getting data'); 2783 }); 2784 } 2785 }); 2786 }); 2787} catch (e) { 2788 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`) 2789} 2790``` 2791 2792### removeDeviceData 2793 2794removeDeviceData(deviceId: string): Promise<void> 2795 2796删除指定设备的数据,使用Promise异步回调。 2797 2798**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 2799 2800**参数:** 2801 2802| 参数名 | 类型 | 必填 | 说明 | 2803| -------- | -------- | ---- | ---------------------- | 2804| deviceId | string | 是 | 表示要删除设备的名称。 | 2805 2806**返回值:** 2807 2808| 类型 | 说明 | 2809| ------------------- | ------------------------- | 2810| Promise<void> | 无返回结果的Promise对象。 | 2811 2812**错误码:** 2813 2814以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2815 2816| **错误码ID** | **错误信息** | 2817| ------------ | -------------------------------------- | 2818| 15100005 | Database or result set already closed. | 2819 2820**示例:** 2821 2822```js 2823let kvStore; 2824const KEY_TEST_STRING_ELEMENT = 'key_test_string_2'; 2825const VALUE_TEST_STRING_ELEMENT = 'value-string-001'; 2826try { 2827 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => { 2828 console.log('Succeeded in putting data'); 2829 }).catch((err) => { 2830 console.error(`Fail to put data.code is ${err.code},message is ${err.message} `); 2831 }); 2832 const deviceid = 'no_exist_device_id'; 2833 kvStore.removeDeviceData(deviceid).then((err) => { 2834 console.log('succeeded in removing device data'); 2835 }).catch((err) => { 2836 console.error(`Fail to remove device data.code is ${err.code},message is ${err.message} `); 2837 }); 2838 kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => { 2839 console.log('Succeeded in getting data'); 2840 }).catch((err) => { 2841 console.error(`Fail to get data.code is ${err.code},message is ${err.message} `); 2842 }); 2843} catch (e) { 2844 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`) 2845} 2846``` 2847 2848### get 2849 2850get(key: string, callback: AsyncCallback<boolean | string | number | Uint8Array>): void 2851 2852获取指定键的值,使用callback异步回调。 2853 2854**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2855 2856**参数:** 2857 2858| 参数名 | 类型 | 必填 | 说明 | 2859| ----- | ------ | ---- | ----------------------- | 2860| key |string | 是 |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2861| callback |AsyncCallback<boolean \| string \| number \| Uint8Array> | 是 |回调函数。返回获取查询的值。 | 2862 2863**错误码:** 2864 2865以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2866 2867| **错误码ID** | **错误信息** | 2868| ------------ | -------------------------------------- | 2869| 15100003 | Database corrupted. | 2870| 15100004 | Not found. | 2871| 15100005 | Database or result set already closed. | 2872 2873**示例:** 2874 2875```js 2876let kvStore; 2877const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2878const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2879try { 2880 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { 2881 if (err != undefined) { 2882 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2883 return; 2884 } 2885 console.log("Succeeded in putting"); 2886 kvStore.get(KEY_TEST_STRING_ELEMENT, function (err, data) { 2887 if (err != undefined) { 2888 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 2889 return; 2890 } 2891 console.log(`Succeeded in getting data.data=${data}`); 2892 }); 2893 }); 2894} catch (e) { 2895 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 2896} 2897``` 2898 2899### get 2900 2901get(key: string): Promise<boolean | string | number | Uint8Array> 2902 2903获取指定键的值,使用Promise异步回调。 2904 2905**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2906 2907**参数:** 2908 2909| 参数名 | 类型 | 必填 | 说明 | 2910| ------ | -------- | ---- | ------------------------------------------------------------ | 2911| key | string | 是 | 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 2912 2913**返回值:** 2914 2915| 类型 | 说明 | 2916| ------ | ------- | 2917|Promise<Uint8Array \| string \| boolean \| number> |Promise对象。返回获取查询的值。| 2918 2919**错误码:** 2920 2921以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2922 2923| **错误码ID** | **错误信息** | 2924| ------------ | -------------------------------------- | 2925| 15100003 | Database corrupted. | 2926| 15100004 | Not found. | 2927| 15100005 | Database or result set already closed. | 2928 2929**示例:** 2930 2931```js 2932let kvStore; 2933const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 2934const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 2935try { 2936 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { 2937 console.log(`Succeeded in putting data.data=${data}`); 2938 kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => { 2939 console.log(`Succeeded in getting data.data=${data}`); 2940 }).catch((err) => { 2941 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 2942 }); 2943 }).catch((err) => { 2944 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 2945 }); 2946} catch (e) { 2947 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 2948} 2949``` 2950 2951### getEntries 2952 2953getEntries(keyPrefix: string, callback: AsyncCallback<Entry[]>): void 2954 2955获取匹配指定键前缀的所有键值对,使用callback异步回调。 2956 2957**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 2958 2959**参数:** 2960 2961| 参数名 | 类型 | 必填 | 说明 | 2962| --------- | -------------------------------------- | ---- | ---------------------------------------- | 2963| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 2964| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数。返回匹配指定前缀的键值对列表。 | 2965 2966**错误码:** 2967 2968以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 2969 2970| **错误码ID** | **错误信息** | 2971| ------------ | -------------------------------------- | 2972| 15100003 | Database corrupted. | 2973| 15100005 | Database or result set already closed. | 2974 2975**示例:** 2976 2977```js 2978let kvStore; 2979try { 2980 let entries = []; 2981 for (var i = 0; i < 10; i++) { 2982 var key = 'batch_test_string_key'; 2983 var entry = { 2984 key: key + i, 2985 value: { 2986 type: distributedKVStore.ValueType.STRING, 2987 value: 'batch_test_string_value' 2988 } 2989 } 2990 entries.push(entry); 2991 } 2992 console.log(`entries: ${entries}`); 2993 kvStore.putBatch(entries, async function (err, data) { 2994 if (err != undefined) { 2995 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 2996 return; 2997 } 2998 console.log('Succeeded in putting Batch'); 2999 kvStore.getEntries('batch_test_string_key', function (err, entries) { 3000 if (err != undefined) { 3001 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 3002 return; 3003 } 3004 console.log('Succeeded in getting Entries'); 3005 console.log(`entries.length: ${entries.length}`); 3006 console.log(`entries[0]: ${entries[0]}`); 3007 }); 3008 }); 3009} catch (e) { 3010 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 3011} 3012``` 3013 3014### getEntries 3015 3016getEntries(keyPrefix: string): Promise<Entry[]> 3017 3018获取匹配指定键前缀的所有键值对,使用Promise异步回调。 3019 3020**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3021 3022**参数:** 3023 3024| 参数名 | 类型 | 必填 | 说明 | 3025| --------- | -------- | ---- | -------------------- | 3026| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 3027 3028**返回值:** 3029 3030| 类型 | 说明 | 3031| -------------------------------- | ------------------------------------------- | 3032| Promise<[Entry](#entry)[]> | Promise对象。返回匹配指定前缀的键值对列表。 | 3033 3034**错误码:** 3035 3036以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3037 3038| **错误码ID** | **错误信息** | 3039| ------------ | -------------------------------------- | 3040| 15100003 | Database corrupted. | 3041| 15100005 | Database or result set already closed. | 3042 3043**示例:** 3044 3045```js 3046let kvStore; 3047try { 3048 let entries = []; 3049 for (var i = 0; i < 10; i++) { 3050 var key = 'batch_test_string_key'; 3051 var entry = { 3052 key: key + i, 3053 value: { 3054 type: distributedKVStore.ValueType.STRING, 3055 value: 'batch_test_string_value' 3056 } 3057 } 3058 entries.push(entry); 3059 } 3060 console.log(`entries: ${entries}`); 3061 kvStore.putBatch(entries).then(async (entries) => { 3062 console.log('Succeeded in putting Batch'); 3063 kvStore.getEntries('batch_test_string_key').then((entries) => { 3064 console.log('Succeeded in getting Entries'); 3065 console.log(`PutBatch ${entries}`); 3066 }).catch((err) => { 3067 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 3068 }); 3069 }).catch((err) => { 3070 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 3071 }); 3072} catch (e) { 3073 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 3074} 3075``` 3076 3077### getEntries 3078 3079getEntries(query: Query, callback: AsyncCallback<Entry[]>): void 3080 3081获取与指定Query对象匹配的键值对列表,使用callback异步回调。 3082 3083**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3084 3085**参数:** 3086 3087| 参数名 | 类型 | 必填 | 说明 | 3088| -------- | -------------------------------------- | ---- | ----------------------------------------------- | 3089| query | [Query](#query) | 是 | 表示要匹配的键前缀。 | 3090| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数。返回与指定Query对象匹配的键值对列表。 | 3091 3092**错误码:** 3093 3094以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3095 3096| **错误码ID** | **错误信息** | 3097| ------------ | -------------------------------------- | 3098| 15100003 | Database corrupted. | 3099| 15100005 | Database or result set already closed. | 3100 3101**示例:** 3102 3103```js 3104let kvStore; 3105try { 3106 var arr = new Uint8Array([21, 31]); 3107 let entries = []; 3108 for (var i = 0; i < 10; i++) { 3109 var key = 'batch_test_bool_key'; 3110 var entry = { 3111 key: key + i, 3112 value: { 3113 type: distributedKVStore.ValueType.BYTE_ARRAY, 3114 value: arr 3115 } 3116 } 3117 entries.push(entry); 3118 } 3119 console.log(`entries: {entries}`); 3120 kvStore.putBatch(entries, async function (err, data) { 3121 console.log('Succeeded in putting Batch'); 3122 const query = new distributedKVStore.Query(); 3123 query.prefixKey("batch_test"); 3124 kvStore.getEntries(query, function (err, entries) { 3125 if (err != undefined) { 3126 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 3127 return; 3128 } 3129 console.log('Succeeded in getting Entries'); 3130 console.log(`entries.length: ${entries.length}`); 3131 console.log(`entries[0]: ${entries[0]}`); 3132 }); 3133 }); 3134} catch (e) { 3135 console.error(`Fail to get Entries.code is ${e.code},message is ${e.message}`); 3136} 3137``` 3138 3139### getEntries 3140 3141getEntries(query: Query): Promise<Entry[]> 3142 3143获取与指定Query对象匹配的键值对列表,使用Promise异步回调。 3144 3145**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3146 3147**参数:** 3148 3149| 参数名 | 类型 | 必填 | 说明 | 3150| ------ | -------------- | ---- | -------------- | 3151| query | [Query](#query) | 是 | 表示查询对象。 | 3152 3153**返回值:** 3154 3155| 类型 | 说明 | 3156| -------------------------------- | -------------------------------------------------- | 3157| Promise<[Entry](#entry)[]> | Promise对象。返回与指定Query对象匹配的键值对列表。 | 3158 3159**错误码:** 3160 3161以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3162 3163| **错误码ID** | **错误信息** | 3164| ------------ | -------------------------------------- | 3165| 15100003 | Database corrupted. | 3166| 15100005 | Database or result set already closed. | 3167 3168**示例:** 3169 3170```js 3171let kvStore; 3172try { 3173 var arr = new Uint8Array([21, 31]); 3174 let entries = []; 3175 for (var i = 0; i < 10; i++) { 3176 var key = 'batch_test_bool_key'; 3177 var entry = { 3178 key: key + i, 3179 value: { 3180 type: distributedKVStore.ValueType.BYTE_ARRAY, 3181 value: arr 3182 } 3183 } 3184 entries.push(entry); 3185 } 3186 console.log(`entries: {entries}`); 3187 kvStore.putBatch(entries).then(async (err) => { 3188 console.log('Succeeded in putting Batch'); 3189 const query = new distributedKVStore.Query(); 3190 query.prefixKey("batch_test"); 3191 kvStore.getEntries(query).then((entries) => { 3192 console.log('Succeeded in getting Entries'); 3193 }).catch((err) => { 3194 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 3195 }); 3196 }).catch((err) => { 3197 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`) 3198 }); 3199 console.log('Succeeded in getting Entries'); 3200} catch (e) { 3201 console.error(`Fail to get Entries.code is ${e.code},message is ${e.message}`); 3202} 3203``` 3204 3205### getResultSet 3206 3207getResultSet(keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void 3208 3209从SingleKVStore数据库中获取具有指定前缀的结果集,使用callback异步回调。 3210 3211**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3212 3213**参数:** 3214 3215| 参数名 | 类型 | 必填 | 说明 | 3216| --------- | ---------------------------------------------------------- | ---- | ------------------------------------ | 3217| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 3218| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数。返回具有指定前缀的结果集。 | 3219 3220**错误码:** 3221 3222以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3223 3224| **错误码ID** | **错误信息** | 3225| ------------ | -------------------------------------- | 3226| 15100003 | Database corrupted. | 3227| 15100005 | Database or result set already closed. | 3228 3229**示例:** 3230 3231```js 3232let kvStore; 3233try { 3234 let resultSet; 3235 let entries = []; 3236 for (var i = 0; i < 10; i++) { 3237 var key = 'batch_test_string_key'; 3238 var entry = { 3239 key: key + i, 3240 value: { 3241 type: distributedKVStore.ValueType.STRING, 3242 value: 'batch_test_string_value' 3243 } 3244 } 3245 entries.push(entry); 3246 } 3247 kvStore.putBatch(entries, async function (err, data) { 3248 if (err != undefined) { 3249 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 3250 return; 3251 } 3252 console.log('Succeeded in putting batch'); 3253 kvStore.getResultSet('batch_test_string_key', async function (err, result) { 3254 if (err != undefined) { 3255 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3256 return; 3257 } 3258 console.log('Succeeded in getting result set'); 3259 resultSet = result; 3260 kvStore.closeResultSet(resultSet, function (err, data) { 3261 if (err != undefined) { 3262 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3263 return; 3264 } 3265 console.log('Succeeded in closing result set'); 3266 }) 3267 }); 3268 }); 3269} catch (e) { 3270 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3271} 3272``` 3273 3274### getResultSet 3275 3276getResultSet(keyPrefix: string): Promise<KVStoreResultSet> 3277 3278从SingleKVStore数据库中获取具有指定前缀的结果集,使用Promise异步回调。 3279 3280**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3281 3282**参数:** 3283 3284| 参数名 | 类型 | 必填 | 说明 | 3285| --------- | -------- | ---- | -------------------- | 3286| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 3287 3288**返回值:** 3289 3290| 类型 | 说明 | 3291| ---------------------------------------------------- | --------------------------------------- | 3292| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。返回具有指定前缀的结果集。 | 3293 3294**错误码:** 3295 3296以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3297 3298| **错误码ID** | **错误信息** | 3299| ------------ | -------------------------------------- | 3300| 15100003 | Database corrupted. | 3301| 15100005 | Database or result set already closed. | 3302 3303**示例:** 3304 3305```js 3306let kvStore; 3307try { 3308 let resultSet; 3309 let entries = []; 3310 for (var i = 0; i < 10; i++) { 3311 var key = 'batch_test_string_key'; 3312 var entry = { 3313 key: key + i, 3314 value: { 3315 type: distributedKVStore.ValueType.STRING, 3316 value: 'batch_test_string_value' 3317 } 3318 } 3319 entries.push(entry); 3320 } 3321 kvStore.putBatch(entries).then(async (err) => { 3322 console.log('Succeeded in putting batch'); 3323 }).catch((err) => { 3324 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 3325 }); 3326 kvStore.getResultSet('batch_test_string_key').then((result) => { 3327 console.log('Succeeded in getting result set'); 3328 resultSet = result; 3329 }).catch((err) => { 3330 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3331 }); 3332 kvStore.closeResultSet(resultSet).then((err) => { 3333 console.log('Succeeded in closing result set'); 3334 }).catch((err) => { 3335 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3336 }); 3337} catch (e) { 3338 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3339} 3340``` 3341 3342### getResultSet 3343 3344getResultSet(query: Query, callback: AsyncCallback<KVStoreResultSet>): void 3345 3346获取与指定Query对象匹配的KVStoreResultSet对象,使用callback异步回调。 3347 3348**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3349 3350**参数:** 3351 3352| 参数名 | 类型 | 必填 | 说明 | 3353| -------- | ---------------------------------------------------------- | ---- | --------------------------------------------------------- | 3354| query | Query | 是 | 表示查询对象。 | 3355| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数,获取与指定Query对象匹配的KVStoreResultSet对象。 | 3356 3357**错误码:** 3358 3359以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3360 3361| **错误码ID** | **错误信息** | 3362| ------------ | -------------------------------------- | 3363| 15100003 | Database corrupted. | 3364| 15100005 | Database or result set already closed. | 3365 3366**示例:** 3367 3368```js 3369let kvStore; 3370try { 3371 let resultSet; 3372 let entries = []; 3373 for (var i = 0; i < 10; i++) { 3374 var key = 'batch_test_string_key'; 3375 var entry = { 3376 key: key + i, 3377 value: { 3378 type: distributedKVStore.ValueType.STRING, 3379 value: 'batch_test_string_value' 3380 } 3381 } 3382 entries.push(entry); 3383 } 3384 kvStore.putBatch(entries, async function (err, data) { 3385 if (err != undefined) { 3386 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 3387 return; 3388 } 3389 console.log('Succeeded in putting batch'); 3390 const query = new distributedKVStore.Query(); 3391 query.prefixKey("batch_test"); 3392 kvStore.getResultSet(query, async function (err, result) { 3393 if (err != undefined) { 3394 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3395 return; 3396 } 3397 console.log('Succeeded in getting result set'); 3398 }); 3399 }); 3400} catch (e) { 3401 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3402} 3403``` 3404 3405### getResultSet 3406 3407getResultSet(query: Query): Promise<KVStoreResultSet> 3408 3409获取与指定Query对象匹配的KVStoreResultSet对象,使用Promise异步回调。 3410 3411**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3412 3413**参数:** 3414 3415| 参数名 | 类型 | 必填 | 说明 | 3416| ------ | -------------- | ---- | -------------- | 3417| query | [Query](#query) | 是 | 表示查询对象。 | 3418 3419**返回值:** 3420 3421| 类型 | 说明 | 3422| ---------------------------------------------------- | ------------------------------------------------------------ | 3423| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。获取与指定Query对象匹配的KVStoreResultSet对象。 | 3424 3425**错误码:** 3426 3427以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3428 3429| **错误码ID** | **错误信息** | 3430| ------------ | -------------------------------------- | 3431| 15100003 | Database corrupted. | 3432| 15100005 | Database or result set already closed. | 3433 3434**示例:** 3435 3436```js 3437let kvStore; 3438try { 3439 let resultSet; 3440 let entries = []; 3441 for (var i = 0; i < 10; i++) { 3442 var key = 'batch_test_string_key'; 3443 var entry = { 3444 key: key + i, 3445 value: { 3446 type: distributedKVStore.ValueType.STRING, 3447 value: 'batch_test_string_value' 3448 } 3449 } 3450 entries.push(entry); 3451 } 3452 kvStore.putBatch(entries).then(async (err) => { 3453 console.log('Succeeded in putting batch'); 3454 }).catch((err) => { 3455 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 3456 }); 3457 const query = new distributedKVStore.Query(); 3458 query.prefixKey("batch_test"); 3459 kvStore.getResultSet(query).then((result) => { 3460 console.log('Succeeded in getting result set'); 3461 resultSet = result; 3462 }).catch((err) => { 3463 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3464 }); 3465} catch (e) { 3466 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3467} 3468``` 3469 3470### getResultSet 3471 3472getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 3473 3474获取与指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 3475 3476**系统接口:** 此接口为系统接口。 3477 3478**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 3479 3480**参数:** 3481 3482| 参数名 | 类型 | 必填 | 说明 | 3483| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 3484| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 3485| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 3486 3487**错误码:** 3488 3489以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3490 3491| **错误码ID** | **错误信息** | 3492| ------------ | -------------------------------------- | 3493| 15100003 | Database corrupted. | 3494| 15100005 | Database or result set already closed. | 3495 3496**示例:** 3497 3498```js 3499import dataSharePredicates from '@ohos.data.dataSharePredicates'; 3500 3501let kvStore; 3502try { 3503 let resultSet; 3504 let predicates = new dataSharePredicates.DataSharePredicates(); 3505 predicates.prefixKey("batch_test_string_key"); 3506 kvStore.getResultSet(predicates, async function (err, result) { 3507 if (err != undefined) { 3508 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3509 return; 3510 } 3511 console.log('Succeeded in getting result set'); 3512 resultSet = result; 3513 kvStore.closeResultSet(resultSet, function (err, data) { 3514 if (err != undefined) { 3515 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3516 return; 3517 } 3518 console.log('Succeeded in closing result set'); 3519 }) 3520 }); 3521} catch (e) { 3522 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3523} 3524``` 3525 3526### getResultSet 3527 3528getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 3529 3530获取与指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 3531 3532**系统接口:** 此接口为系统接口。 3533 3534**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 3535 3536**参数:** 3537 3538| 参数名 | 类型 | 必填 | 说明 | 3539| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 3540| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 3541 3542**返回值:** 3543 3544| 类型 | 说明 | 3545| ---------------------------------------------------- | ------------------------- | 3546| Promise<[KVStoreResultSet](#kvstoreresultset)> | 无返回结果的Promise对象。 | 3547 3548**错误码:** 3549 3550以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3551 3552| **错误码ID** | **错误信息** | 3553| ------------ | -------------------------------------- | 3554| 15100003 | Database corrupted. | 3555| 15100005 | Database or result set already closed. | 3556 3557**示例:** 3558 3559```js 3560import dataSharePredicates from '@ohos.data.dataSharePredicates'; 3561 3562let kvStore; 3563try { 3564 let resultSet; 3565 let predicates = new dataSharePredicates.DataSharePredicates(); 3566 predicates.prefixKey("batch_test_string_key"); 3567 kvStore.getResultSet(predicates).then((result) => { 3568 console.log('Succeeded in getting result set'); 3569 resultSet = result; 3570 }).catch((err) => { 3571 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 3572 }); 3573 kvStore.closeResultSet(resultSet).then((err) => { 3574 console.log('Succeeded in closing result set'); 3575 }).catch((err) => { 3576 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3577 }); 3578} catch (e) { 3579 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3580} 3581``` 3582 3583### closeResultSet 3584 3585closeResultSet(resultSet: KVStoreResultSet, callback: AsyncCallback<void>): void 3586 3587关闭由[SingleKvStore.getResultSet](#getresultset-1)返回的KVStoreResultSet对象,使用callback异步回调。 3588 3589**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3590 3591**参数:** 3592 3593| 参数名 | 类型 | 必填 | 说明 | 3594| --------- | ------------------------------------- | ---- | ---------------------------------- | 3595| resultSet | [KVStoreResultSet](#kvstoreresultset) | 是 | 表示要关闭的KVStoreResultSet对象。 | 3596| callback | AsyncCallback<void> | 是 | 回调函数。 | 3597 3598**示例:** 3599 3600```js 3601let kvStore; 3602try { 3603 let resultSet = null; 3604 kvStore.closeResultSet(resultSet, function (err, data) { 3605 if (err == undefined) { 3606 console.log('Succeeded in closing result set'); 3607 } else { 3608 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3609 } 3610 }); 3611} catch (e) { 3612 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3613} 3614``` 3615 3616### closeResultSet 3617 3618closeResultSet(resultSet: KVStoreResultSet): Promise<void> 3619 3620关闭由[SingleKvStore.getResultSet](#getresultset-1)返回的KVStoreResultSet对象,使用Promise异步回调。 3621 3622**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3623 3624**参数:** 3625 3626| 参数名 | 类型 | 必填 | 说明 | 3627| --------- | ------------------------------------- | ---- | ---------------------------------- | 3628| resultSet | [KVStoreResultSet](#kvstoreresultset) | 是 | 表示要关闭的KVStoreResultSet对象。 | 3629 3630**返回值:** 3631 3632| 类型 | 说明 | 3633| ------------------- | ------------------------- | 3634| Promise<void> | 无返回结果的Promise对象。 | 3635 3636**示例:** 3637 3638```js 3639let kvStore; 3640try { 3641 let resultSet = null; 3642 kvStore.closeResultSet(resultSet).then(() => { 3643 console.log('Succeeded in closing result set'); 3644 }).catch((err) => { 3645 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 3646 }); 3647} catch (e) { 3648 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3649} 3650``` 3651 3652### getResultSize 3653 3654getResultSize(query: Query, callback: AsyncCallback<number>): void 3655 3656获取与指定Query对象匹配的结果数,使用callback异步回调。 3657 3658**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3659 3660**参数:** 3661 3662| 参数名 | 类型 | 必填 | 说明 | 3663| -------- | --------------------------- | ---- | ------------------------------------------- | 3664| query | [Query](#query) | 是 | 表示查询对象。 | 3665| callback | AsyncCallback<number> | 是 | 回调函数。返回与指定Query对象匹配的结果数。 | 3666 3667**错误码:** 3668 3669以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3670 3671| **错误码ID** | **错误信息** | 3672| ------------ | -------------------------------------- | 3673| 15100003 | Database corrupted. | 3674| 15100005 | Database or result set already closed. | 3675 3676**示例:** 3677 3678```js 3679let kvStore; 3680try { 3681 let entries = []; 3682 for (var i = 0; i < 10; i++) { 3683 var key = 'batch_test_string_key'; 3684 var entry = { 3685 key: key + i, 3686 value: { 3687 type: distributedKVStore.ValueType.STRING, 3688 value: 'batch_test_string_value' 3689 } 3690 } 3691 entries.push(entry); 3692 } 3693 kvStore.putBatch(entries, async function (err, data) { 3694 console.log('Succeeded in putting batch'); 3695 const query = new distributedKVStore.Query(); 3696 query.prefixKey("batch_test"); 3697 kvStore.getResultSize(query, async function (err, resultSize) { 3698 if (err != undefined) { 3699 console.error(`Fail to get result size.code is ${err.code},message is ${err.message}`); 3700 return; 3701 } 3702 console.log('Succeeded in getting result set size'); 3703 }); 3704 }); 3705} catch (e) { 3706 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3707} 3708``` 3709 3710### getResultSize 3711 3712getResultSize(query: Query): Promise<number> 3713 3714获取与指定Query对象匹配的结果数,使用Promise异步回调。 3715 3716**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3717 3718**参数:** 3719 3720| 参数名 | 类型 | 必填 | 说明 | 3721| ------ | -------------- | ---- | -------------- | 3722| query | [Query](#query) | 是 | 表示查询对象。 | 3723 3724**返回值:** 3725 3726| 类型 | 说明 | 3727| --------------------- | ----------------------------------------------- | 3728| Promise<number> | Promise对象。获取与指定QuerV9对象匹配的结果数。 | 3729 3730**错误码:** 3731 3732以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3733 3734| **错误码ID** | **错误信息** | 3735| ------------ | -------------------------------------- | 3736| 15100003 | Database corrupted. | 3737| 15100005 | Database or result set already closed. | 3738 3739**示例:** 3740 3741```js 3742let kvStore; 3743try { 3744 let entries = []; 3745 for (var i = 0; i < 10; i++) { 3746 var key = 'batch_test_string_key'; 3747 var entry = { 3748 key: key + i, 3749 value: { 3750 type: distributedKVStore.ValueType.STRING, 3751 value: 'batch_test_string_value' 3752 } 3753 } 3754 entries.push(entry); 3755 } 3756 kvStore.putBatch(entries).then(async (err) => { 3757 console.log('Succeeded in putting batch'); 3758 }).catch((err) => { 3759 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 3760 }); 3761 const query = new distributedKVStore.Query(); 3762 query.prefixKey("batch_test"); 3763 kvStore.getResultSize(query).then((resultSize) => { 3764 console.log('Succeeded in getting result set size'); 3765 }).catch((err) => { 3766 console.error(`Fail to get result size.code is ${err.code},message is ${err.message}`); 3767 }); 3768} catch (e) { 3769 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 3770} 3771``` 3772 3773### backup 3774 3775backup(file:string, callback: AsyncCallback<void>):void 3776 3777以指定名称备份数据库,使用callback异步回调。 3778 3779**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3780 3781**参数:** 3782 3783| 参数名 | 类型 | 必填 | 说明 | 3784| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 3785| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3786| callback | AsyncCallback<void> | 是 | 回调函数。当以指定名称备份数据库成功,err为undefined,否则为错误对象。 | 3787 3788**错误码:** 3789 3790以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3791 3792| **错误码ID** | **错误信息** | 3793| ------------ | -------------------------------------- | 3794| 15100005 | Database or result set already closed. | 3795 3796**示例:** 3797 3798```js 3799let kvStore; 3800let file = "BK001"; 3801try { 3802 kvStore.backup(file, (err, data) => { 3803 if (err) { 3804 console.error(`Fail to backup.code is ${err.code},message is ${err.message} `); 3805 } else { 3806 console.info(`Succeeded in backupping data.data=${data}`); 3807 } 3808 }); 3809} catch (e) { 3810 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3811} 3812``` 3813 3814### backup 3815 3816backup(file:string): Promise<void> 3817 3818以指定名称备份数据库,使用Promise异步回调。 3819 3820**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3821 3822**参数:** 3823 3824| 参数名 | 类型 | 必填 | 说明 | 3825| ------ | -------- | ---- | ------------------------------------------------------------ | 3826| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3827 3828**返回值:** 3829 3830| 类型 | 说明 | 3831| ------------------- | ------------------------- | 3832| Promise<void> | 无返回结果的Promise对象。 | 3833 3834**错误码:** 3835 3836以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3837 3838| **错误码ID** | **错误信息** | 3839| ------------ | -------------------------------------- | 3840| 15100005 | Database or result set already closed. | 3841 3842**示例:** 3843 3844```js 3845let kvStore; 3846let file = "BK001"; 3847try { 3848 kvStore.backup(file).then((data) => { 3849 console.info(`Succeeded in backupping data.data=${data}`); 3850 }).catch((err) => { 3851 console.error(`Fail to backup.code is ${err.code},message is ${err.message}`); 3852 }); 3853} catch (e) { 3854 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3855} 3856``` 3857 3858### restore 3859 3860restore(file:string, callback: AsyncCallback<void>):void 3861 3862从指定的数据库文件恢复数据库,使用callback异步回调。 3863 3864**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3865 3866**参数:** 3867 3868| 参数名 | 类型 | 必填 | 说明 | 3869| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 3870| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3871| callback | AsyncCallback<void> | 是 | 回调函数。当从指定的数据库文件恢复数据库成功,err为undefined,否则为错误对象。 | 3872 3873**错误码:** 3874 3875以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3876 3877| **错误码ID** | **错误信息** | 3878| ------------ | -------------------------------------- | 3879| 15100005 | Database or result set already closed. | 3880 3881**示例:** 3882 3883```js 3884let kvStore; 3885let file = "BK001"; 3886try { 3887 kvStore.restore(file, (err, data) => { 3888 if (err) { 3889 console.error(`Fail to restore.code is ${err.code},message is ${err.message}`); 3890 } else { 3891 console.info(`Succeeded in restoring data.data=${data}`); 3892 } 3893 }); 3894} catch (e) { 3895 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3896} 3897``` 3898 3899### restore 3900 3901restore(file:string): Promise<void> 3902 3903从指定的数据库文件恢复数据库,使用Promise异步回调。 3904 3905**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3906 3907**参数:** 3908 3909| 参数名 | 类型 | 必填 | 说明 | 3910| ------ | -------- | ---- | ------------------------------------------------------------ | 3911| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3912 3913**返回值:** 3914 3915| 类型 | 说明 | 3916| ------------------- | ------------------------- | 3917| Promise<void> | 无返回结果的Promise对象。 | 3918 3919**错误码:** 3920 3921以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 3922 3923| **错误码ID** | **错误信息** | 3924| ------------ | -------------------------------------- | 3925| 15100005 | Database or result set already closed. | 3926 3927**示例:** 3928 3929```js 3930let kvStore; 3931let file = "BK001"; 3932try { 3933 kvStore.restore(file).then((data) => { 3934 console.info(`Succeeded in restoring data.data=${data}`); 3935 }).catch((err) => { 3936 console.error(`Fail to restore.code is ${err.code},message is ${err.message}`); 3937 }); 3938} catch (e) { 3939 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3940} 3941``` 3942 3943### deleteBackup 3944 3945deleteBackup(files:Array<string>, callback: AsyncCallback<Array<[string, number]>>):void 3946 3947根据指定名称删除备份文件,使用callback异步回调。 3948 3949**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3950 3951**参数:** 3952 3953| 参数名 | 类型 | 必填 | 说明 | 3954| -------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ | 3955| files | Array<string> | 是 | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3956| callback | AsyncCallback<Array<[string, number]>> | 是 | 回调函数,返回删除备份的文件名及其处理结果。 | 3957 3958**示例:** 3959 3960```js 3961let kvStore; 3962let files = ["BK001", "BK002"]; 3963try { 3964 kvStore.deleteBackup(files, (err, data) => { 3965 if (err) { 3966 console.error(`Fail to delete Backup.code is ${err.code},message is ${err.message}`); 3967 } else { 3968 console.info(`Succeed in deleting Backup.data=${data}`); 3969 } 3970 }); 3971} catch (e) { 3972 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 3973} 3974``` 3975 3976### deleteBackup 3977 3978deleteBackup(files:Array<string>): Promise<Array<[string, number]>> 3979 3980根据指定名称删除备份文件,使用Promise异步回调。 3981 3982**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 3983 3984**参数:** 3985 3986| 参数名 | 类型 | 必填 | 说明 | 3987| ------ | ------------------- | ---- | ------------------------------------------------------------ | 3988| files | Array<string> | 是 | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 3989 3990**返回值:** 3991 3992| 类型 | 说明 | 3993| -------------------------------------------- | ----------------------------------------------- | 3994| Promise<Array<[string, number]>> | Promise对象,返回删除备份的文件名及其处理结果。 | 3995 3996**示例:** 3997 3998```js 3999let kvStore; 4000let files = ["BK001", "BK002"]; 4001try { 4002 kvStore.deleteBackup(files).then((data) => { 4003 console.info(`Succeed in deleting Backup.data=${data}`); 4004 }).catch((err) => { 4005 console.error(`Fail to delete Backup.code is ${err.code},message is ${err.message}`); 4006 }) 4007} catch (e) { 4008 console.log(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4009} 4010``` 4011 4012### startTransaction 4013 4014startTransaction(callback: AsyncCallback<void>): void 4015 4016启动SingleKVStore数据库中的事务,使用callback异步回调。 4017 4018**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4019 4020**参数:** 4021 4022| 参数名 | 类型 | 必填 | 说明 | 4023| -------- | ------------------------- | ---- | ---------- | 4024| callback | AsyncCallback<void> | 是 | 回调函数。 | 4025 4026**错误码:** 4027 4028以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4029 4030| **错误码ID** | **错误信息** | 4031| ------------ | -------------------------------------- | 4032| 15100005 | Database or result set already closed. | 4033 4034**示例:** 4035 4036```js 4037let kvStore; 4038function putBatchString(len, prefix) { 4039 let entries = []; 4040 for (var i = 0; i < len; i++) { 4041 var entry = { 4042 key: prefix + i, 4043 value: { 4044 type: distributedKVStore.ValueType.STRING, 4045 value: 'batch_test_string_value' 4046 } 4047 } 4048 entries.push(entry); 4049 } 4050 return entries; 4051} 4052 4053try { 4054 var count = 0; 4055 kvStore.on('dataChange', 0, function (data) { 4056 console.log(`startTransaction 0 ${data}`); 4057 count++; 4058 }); 4059 kvStore.startTransaction(async function (err, data) { 4060 if (err != undefined) { 4061 console.error(`Fail to start Transaction.code is ${err.code},message is ${err.message}`); 4062 return; 4063 } 4064 console.log('Succeeded in starting Transaction'); 4065 let entries = putBatchString(10, 'batch_test_string_key'); 4066 console.log(`entries: ${entries}`); 4067 kvStore.putBatch(entries, async function (err, data) { 4068 if (err != undefined) { 4069 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 4070 return; 4071 } 4072 console.log('Succeeded in putting Batch'); 4073 }); 4074 }); 4075} catch (e) { 4076 console.error(`Fail to start Transaction.code is ${e.code},message is ${e.message}`); 4077} 4078``` 4079 4080### startTransaction 4081 4082startTransaction(): Promise<void> 4083 4084启动SingleKVStore数据库中的事务,使用Promise异步回调。 4085 4086**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4087 4088**返回值:** 4089 4090| 类型 | 说明 | 4091| ------------------- | ------------------------- | 4092| Promise<void> | 无返回结果的Promise对象。 | 4093 4094**错误码:** 4095 4096以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4097 4098| **错误码ID** | **错误信息** | 4099| ------------ | -------------------------------------- | 4100| 15100005 | Database or result set already closed. | 4101 4102**示例:** 4103 4104```js 4105let kvStore; 4106try { 4107 var count = 0; 4108 kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) { 4109 console.log(`startTransaction 0 ${data}`); 4110 count++; 4111 }); 4112 kvStore.startTransaction().then(async (err) => { 4113 console.log('Succeeded in starting Transaction'); 4114 }).catch((err) => { 4115 console.error(`Fail to start Transaction.code is ${err.code},message is ${err.message}`); 4116 }); 4117} catch (e) { 4118 console.error(`Fail to start Transaction.code is ${e.code},message is ${e.message}`); 4119} 4120``` 4121 4122### commit 4123 4124commit(callback: AsyncCallback<void>): void 4125 4126提交SingleKVStore数据库中的事务,使用callback异步回调。 4127 4128**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4129 4130**参数:** 4131 4132| 参数名 | 类型 | 必填 | 说明 | 4133| -------- | ------------------------- | ---- | ---------- | 4134| callback | AsyncCallback<void> | 是 | 回调函数。 | 4135 4136**错误码:** 4137 4138以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4139 4140| **错误码ID** | **错误信息** | 4141| ------------ | -------------------------------------- | 4142| 15100005 | Database or result set already closed. | 4143 4144**示例:** 4145 4146```js 4147let kvStore; 4148try { 4149 kvStore.commit(function (err, data) { 4150 if (err == undefined) { 4151 console.log('Succeeded in committing'); 4152 } else { 4153 console.error(`Fail to commit.code is ${err.code},message is ${err.message}`); 4154 } 4155 }); 4156} catch (e) { 4157 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4158} 4159``` 4160 4161### commit 4162 4163commit(): Promise<void> 4164 4165提交SingleKVStore数据库中的事务,使用Promise异步回调。 4166 4167**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4168 4169**返回值:** 4170 4171| 类型 | 说明 | 4172| ------------------- | ------------------------- | 4173| Promise<void> | 无返回结果的Promise对象。 | 4174 4175**错误码:** 4176 4177以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4178 4179| **错误码ID** | **错误信息** | 4180| ------------ | -------------------------------------- | 4181| 15100005 | Database or result set already closed. | 4182 4183**示例:** 4184 4185```js 4186let kvStore; 4187try { 4188 kvStore.commit().then(async (err) => { 4189 console.log('Succeeded in committing'); 4190 }).catch((err) => { 4191 console.error(`Fail to commit.code is ${err.code},message is ${err.message}`); 4192 }); 4193} catch (e) { 4194 console.error(`An unexpected error occurred.ode is ${e.code},message is ${e.message}`); 4195} 4196``` 4197 4198### rollback 4199 4200rollback(callback: AsyncCallback<void>): void 4201 4202在SingleKVStore数据库中回滚事务,使用callback异步回调。 4203 4204**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4205 4206**参数:** 4207 4208| 参数名 | 类型 | 必填 | 说明 | 4209| -------- | ------------------------- | ---- | ---------- | 4210| callback | AsyncCallback<void> | 是 | 回调函数。 | 4211 4212**错误码:** 4213 4214以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4215 4216| **错误码ID** | **错误信息** | 4217| ------------ | -------------------------------------- | 4218| 15100005 | Database or result set already closed. | 4219 4220**示例:** 4221 4222```js 4223let kvStore; 4224try { 4225 kvStore.rollback(function (err,data) { 4226 if (err == undefined) { 4227 console.log('Succeeded in rolling back'); 4228 } else { 4229 console.error(`Fail to rollback.code is ${err.code},message is ${err.message}`); 4230 } 4231 }); 4232}catch(e) { 4233 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4234} 4235``` 4236 4237### rollback 4238 4239rollback(): Promise<void> 4240 4241在SingleKVStore数据库中回滚事务,使用Promise异步回调。 4242 4243**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4244 4245**返回值:** 4246 4247| 类型 | 说明 | 4248| ------------------- | ------------------------- | 4249| Promise<void> | 无返回结果的Promise对象。 | 4250 4251**错误码:** 4252 4253以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4254 4255| **错误码ID** | **错误信息** | 4256| ------------ | -------------------------------------- | 4257| 15100005 | Database or result set already closed. | 4258 4259**示例:** 4260 4261```js 4262let kvStore; 4263try { 4264 kvStore.rollback().then(async (err) => { 4265 console.log('Succeeded in rolling back'); 4266 }).catch((err) => { 4267 console.error(`Fail to rollback.code is ${err.code},message is ${err.message}`); 4268 }); 4269} catch (e) { 4270 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4271} 4272``` 4273 4274### enableSync 4275 4276enableSync(enabled: boolean, callback: AsyncCallback<void>): void 4277 4278设定是否开启同步,使用callback异步回调。 4279 4280**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4281 4282**参数:** 4283 4284| 参数名 | 类型 | 必填 | 说明 | 4285| -------- | ------------------------- | ---- | --------------------------------------------------------- | 4286| enabled | boolean | 是 | 设定是否开启同步,true表示开启同步,false表示不启用同步。 | 4287| callback | AsyncCallback<void> | 是 | 回调函数。 | 4288 4289**示例:** 4290 4291```js 4292let kvStore; 4293try { 4294 kvStore.enableSync(true, function (err, data) { 4295 if (err == undefined) { 4296 console.log('Succeeded in enabling sync'); 4297 } else { 4298 console.error(`Fail to enable sync.code is ${err.code},message is ${err.message}`); 4299 } 4300 }); 4301} catch (e) { 4302 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4303} 4304``` 4305 4306### enableSync 4307 4308enableSync(enabled: boolean): Promise<void> 4309 4310设定是否开启同步,使用Promise异步回调。 4311 4312**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4313 4314**参数:** 4315 4316| 参数名 | 类型 | 必填 | 说明 | 4317| ------- | -------- | ---- | --------------------------------------------------------- | 4318| enabled | boolean | 是 | 设定是否开启同步,true表示开启同步,false表示不启用同步。 | 4319 4320**返回值:** 4321 4322| 类型 | 说明 | 4323| ------------------- | ------------------------- | 4324| Promise<void> | 无返回结果的Promise对象。 | 4325 4326**示例:** 4327 4328```js 4329let kvStore; 4330try { 4331 kvStore.enableSync(true).then((err) => { 4332 console.log('Succeeded in enabling sync'); 4333 }).catch((err) => { 4334 console.error(`Fail to enable sync.code is ${err.code},message is ${err.message}`); 4335 }); 4336} catch (e) { 4337 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4338} 4339``` 4340 4341### setSyncRange 4342 4343setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback<void>): void 4344 4345设置同步范围标签,使用callback异步回调。 4346 4347**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4348 4349**参数:** 4350 4351| 参数名 | 类型 | 必填 | 说明 | 4352| ------------------- | ------------------------- | ---- | -------------------------------- | 4353| localLabels | string[] | 是 | 表示本地设备的同步标签。 | 4354| remoteSupportLabels | string[] | 是 | 表示要同步数据的设备的同步标签。 | 4355| callback | AsyncCallback<void> | 是 | 回调函数。 | 4356 4357**示例:** 4358 4359```js 4360let kvStore; 4361try { 4362 const localLabels = ['A', 'B']; 4363 const remoteSupportLabels = ['C', 'D']; 4364 kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) { 4365 if (err != undefined) { 4366 console.error(`Fail to set syncRange.code is ${err.code},message is ${err.message}`); 4367 return; 4368 } 4369 console.log('Succeeded in setting syncRange'); 4370 }); 4371} catch (e) { 4372 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4373} 4374``` 4375 4376### setSyncRange 4377 4378setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise<void> 4379 4380设置同步范围标签,使用Promise异步回调。 4381 4382**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4383 4384**参数:** 4385 4386| 参数名 | 类型 | 必填 | 说明 | 4387| ------------------- | -------- | ---- | -------------------------------- | 4388| localLabels | string[] | 是 | 表示本地设备的同步标签。 | 4389| remoteSupportLabels | string[] | 是 | 表示要同步数据的设备的同步标签。 | 4390 4391**返回值:** 4392 4393| 类型 | 说明 | 4394| ------------------- | ------------------------- | 4395| Promise<void> | 无返回结果的Promise对象。 | 4396 4397**示例:** 4398 4399```js 4400let kvStore; 4401try { 4402 const localLabels = ['A', 'B']; 4403 const remoteSupportLabels = ['C', 'D']; 4404 kvStore.setSyncRange(localLabels, remoteSupportLabels).then((err) => { 4405 console.log('Succeeded in setting syncRange'); 4406 }).catch((err) => { 4407 console.error(`Fail to set syncRange.code is ${err.code},message is ${err.message}`); 4408 }); 4409} catch (e) { 4410 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4411} 4412``` 4413 4414### setSyncParam 4415 4416setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback<void>): void 4417 4418设置数据库同步允许的默认延迟,使用callback异步回调。 4419 4420**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4421 4422**参数:** 4423 4424| 参数名 | 类型 | 必填 | 说明 | 4425| --------------------- | ------------------------- | ---- | -------------------------------------------- | 4426| defaultAllowedDelayMs | number | 是 | 表示数据库同步允许的默认延迟,以毫秒为单位。 | 4427| callback | AsyncCallback<void> | 是 | 回调函数。 | 4428 4429**示例:** 4430 4431```js 4432let kvStore; 4433try { 4434 const defaultAllowedDelayMs = 500; 4435 kvStore.setSyncParam(defaultAllowedDelayMs, function (err, data) { 4436 if (err != undefined) { 4437 console.error(`Fail to set syncParam.code is ${err.code},message is ${err.message}`); 4438 return; 4439 } 4440 console.log('Succeeded in setting syncParam'); 4441 }); 4442} catch (e) { 4443 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4444} 4445``` 4446 4447### setSyncParam 4448 4449setSyncParam(defaultAllowedDelayMs: number): Promise<void> 4450 4451设置数据库同步允许的默认延迟,使用Promise异步回调。 4452 4453**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4454 4455**参数:** 4456 4457| 参数名 | 类型 | 必填 | 说明 | 4458| --------------------- | -------- | ---- | -------------------------------------------- | 4459| defaultAllowedDelayMs | number | 是 | 表示数据库同步允许的默认延迟,以毫秒为单位。 | 4460 4461**返回值:** 4462 4463| 类型 | 说明 | 4464| ------------------- | ------------------------- | 4465| Promise<void> | 无返回结果的Promise对象。 | 4466 4467**示例:** 4468 4469```js 4470let kvStore; 4471try { 4472 const defaultAllowedDelayMs = 500; 4473 kvStore.setSyncParam(defaultAllowedDelayMs).then((err) => { 4474 console.log('Succeeded in setting syncParam'); 4475 }).catch((err) => { 4476 console.error(`Fail to set syncParam.code is ${err.code},message is ${err.message}`); 4477 }); 4478} catch (e) { 4479 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4480} 4481``` 4482 4483### sync 4484 4485sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void 4486 4487在手动同步方式下,触发数据库同步。关于键值型数据库的同步方式说明,请见[键值型数据库跨设备数据同步](../../database/data-sync-of-kv-store.md)。 4488> **说明:** 4489> 4490> 其中deviceIds通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。 4491 4492**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。 4493 4494**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4495 4496**参数:** 4497 4498| 参数名 | 类型 | 必填 | 说明 | 4499| --------- | --------------------- | ---- | ---------------------------------------------- | 4500| deviceIds | string[] | 是 | 同一组网环境下,需要同步的设备的deviceId列表。 | 4501| mode | [SyncMode](#syncmode) | 是 | 同步模式。 | 4502| delayMs | number | 否 | 可选参数,允许延时时间,单位:ms(毫秒),默认为0。 | 4503 4504**错误码:** 4505 4506以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4507 4508| **错误码ID** | **错误信息** | 4509| ------------ | ------------------- | 4510| 15100003 | Database corrupted. | 4511| 15100004 | Not found. | 4512 4513**示例:** 4514 4515```js 4516import deviceManager from '@ohos.distributedHardware.deviceManager'; 4517 4518let devManager; 4519let kvStore; 4520const KEY_TEST_SYNC_ELEMENT = 'key_test_sync'; 4521const VALUE_TEST_SYNC_ELEMENT = 'value-string-001'; 4522// create deviceManager 4523deviceManager.createDeviceManager('bundleName', (err, value) => { 4524 if (!err) { 4525 devManager = value; 4526 let deviceIds = []; 4527 if (devManager != null) { 4528 var devices = devManager.getTrustedDeviceListSync(); 4529 for (var i = 0; i < devices.length; i++) { 4530 deviceIds[i] = devices[i].deviceId; 4531 } 4532 } 4533 try { 4534 kvStore.on('syncComplete', function (data) { 4535 console.log('Sync dataChange'); 4536 }); 4537 kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err, data) { 4538 if (err != undefined) { 4539 console.error(`Fail to sync.code is ${err.code},message is ${err.message}`); 4540 return; 4541 } 4542 console.log('Succeeded in putting data'); 4543 const mode = distributedKVStore.SyncMode.PULL_ONLY; 4544 kvStore.sync(deviceIds, mode, 1000); 4545 }); 4546 } catch (e) { 4547 console.error(`Fail to sync.code is ${e.code},message is ${e.message}`); 4548 } 4549 } 4550}); 4551``` 4552 4553### sync 4554 4555sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void 4556 4557在手动同步方式下,触发数据库同步,此方法为同步方法。关于键值型数据库的同步方式说明,请见[键值型数据库跨设备数据同步](../../database/data-sync-of-kv-store.md)。 4558> **说明:** 4559> 4560> 其中deviceIds通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。 4561 4562**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。 4563 4564**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4565 4566**参数:** 4567 4568| 参数名 | 类型 | 必填 | 说明 | 4569| --------- | --------------------- | ---- | ---------------------------------------------- | 4570| deviceIds | string[] | 是 | 同一组网环境下,需要同步的设备的deviceId列表。 | 4571| mode | [SyncMode](#syncmode) | 是 | 同步模式。 | 4572| query | [Query](#query) | 是 | 表示数据库的查询谓词条件 | 4573| delayMs | number | 否 | 可选参数,允许延时时间,单位:ms(毫秒),默认为0。 | 4574 4575**错误码:** 4576 4577以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4578 4579| **错误码ID** | **错误信息** | 4580| ------------ | ------------------- | 4581| 15100003 | Database corrupted. | 4582| 15100004 | Not found. | 4583 4584**示例:** 4585 4586```js 4587import deviceManager from '@ohos.distributedHardware.deviceManager'; 4588 4589let devManager; 4590let kvStore; 4591const KEY_TEST_SYNC_ELEMENT = 'key_test_sync'; 4592const VALUE_TEST_SYNC_ELEMENT = 'value-string-001'; 4593// create deviceManager 4594deviceManager.createDeviceManager('bundleName', (err, value) => { 4595 if (!err) { 4596 devManager = value; 4597 let deviceIds = []; 4598 if (devManager != null) { 4599 var devices = devManager.getTrustedDeviceListSync(); 4600 for (var i = 0; i < devices.length; i++) { 4601 deviceIds[i] = devices[i].deviceId; 4602 } 4603 } 4604 try { 4605 kvStore.on('syncComplete', function (data) { 4606 console.log('Sync dataChange'); 4607 }); 4608 kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err, data) { 4609 if (err != undefined) { 4610 console.error(`Fail to sync.code is ${err.code},message is ${err.message}`); 4611 return; 4612 } 4613 console.log('Succeeded in putting data'); 4614 const mode = distributedKVStore.SyncMode.PULL_ONLY; 4615 const query = new distributedKVStore.Query(); 4616 query.prefixKey("batch_test"); 4617 query.deviceId('localDeviceId'); 4618 kvStore.sync(deviceIds, query, mode, 1000); 4619 }); 4620 } catch (e) { 4621 console.error(`Fail to sync.code is ${e.code},message is ${e.message}`); 4622 } 4623 } 4624}); 4625``` 4626 4627### on('dataChange') 4628 4629on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void 4630 4631订阅指定类型的数据变更通知。 4632 4633**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4634 4635**参数:** 4636 4637| 参数名 | 类型 | 必填 | 说明 | 4638| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------- | 4639| event | string | 是 | 订阅的事件名,固定为'dataChange',表示数据变更事件。 | 4640| type | [SubscribeType](#subscribetype) | 是 | 表示订阅的类型。 | 4641| listener | Callback<[ChangeNotification](#changenotification)> | 是 | 回调函数。 | 4642 4643**错误码:** 4644 4645以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4646 4647| **错误码ID** | **错误信息** | 4648| ------------ | -------------------------------------- | 4649| 15100001 | Over max subscribe limits. | 4650| 15100005 | Database or result set already closed. | 4651 4652**示例:** 4653 4654```js 4655let kvStore; 4656try { 4657 kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) { 4658 console.log(`dataChange callback call data: ${data}`); 4659 }); 4660} catch (e) { 4661 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4662} 4663``` 4664 4665### on('syncComplete') 4666 4667on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void 4668 4669订阅同步完成事件回调通知。 4670 4671**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4672 4673**参数:** 4674 4675| 参数名 | 类型 | 必填 | 说明 | 4676| ------------ | --------------------------------------------- | ---- | ------------------------------------------------------ | 4677| event | string | 是 | 订阅的事件名,固定为'syncComplete',表示同步完成事件。 | 4678| syncCallback | Callback<Array<[string, number]>> | 是 | 回调函数。用于向调用方发送同步结果的回调。 | 4679 4680**示例:** 4681 4682```js 4683let kvStore; 4684const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; 4685const VALUE_TEST_FLOAT_ELEMENT = 321.12; 4686try { 4687 kvStore.on('syncComplete', function (data) { 4688 console.log(`syncComplete ${data}`); 4689 }); 4690 kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => { 4691 console.log('succeeded in putting'); 4692 }).catch((err) => { 4693 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 4694 }); 4695} catch (e) { 4696 console.error(`Fail to subscribe syncComplete.code is ${e.code},message is ${e.message}`); 4697} 4698``` 4699 4700### off('dataChange') 4701 4702off(event:'dataChange', listener?: Callback<ChangeNotification>): void 4703 4704取消订阅数据变更通知。 4705 4706**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4707 4708**参数:** 4709 4710| 参数名 | 类型 | 必填 | 说明 | 4711| -------- | --------------------------------------------------------- | ---- | -------------------------------------------------------- | 4712| event | string | 是 | 取消订阅的事件名,固定为'dataChange',表示数据变更事件。 | 4713| listener | Callback<[ChangeNotification](#changenotification)> | 否 | 取消订阅的函数。如不设置callback,则取消所有已订阅的函数。 | 4714 4715**错误码:** 4716 4717以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4718 4719| **错误码ID** | **错误信息** | 4720| ------------ | -------------------------------------- | 4721| 15100005 | Database or result set already closed. | 4722 4723**示例:** 4724 4725```js 4726let kvStore; 4727class KvstoreModel { 4728 call(data) { 4729 console.log(`dataChange : ${data}`); 4730 } 4731 4732 subscribeDataChange() { 4733 try { 4734 if (kvStore != null) { 4735 kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call); 4736 } 4737 } catch (err) { 4738 console.error(`Fail to subscribeDataChange.code is ${err.code},message is ${err.message}`); 4739 } 4740 } 4741 4742 unsubscribeDataChange() { 4743 try { 4744 if (kvStore != null) { 4745 kvStore.off('dataChange', this.call); 4746 } 4747 } catch (err) { 4748 console.error(`Fail to unsubscribeDataChange.code is ${err.code},message is ${err.message}`); 4749 } 4750 } 4751} 4752``` 4753 4754### off('syncComplete') 4755 4756off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void 4757 4758取消订阅同步完成事件回调通知。 4759 4760**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4761 4762**参数:** 4763 4764| 参数名 | 类型 | 必填 | 说明 | 4765| ------------ | --------------------------------------------- | ---- | ---------------------------------------------------------- | 4766| event | string | 是 | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 | 4767| syncCallback | Callback<Array<[string, number]>> | 否 | 取消订阅的函数。如不设置callback,则取消所有已订阅的函数。 | 4768 4769**示例:** 4770 4771```js 4772let kvStore; 4773class KvstoreModel { 4774 call(data) { 4775 console.log(`syncComplete : ${data}`); 4776 } 4777 4778 subscribeDataChange() { 4779 try { 4780 if (kvStore != null) { 4781 kvStore.on('syncComplete', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call); 4782 } 4783 } catch (err) { 4784 console.error(`Fail to subscribeDataChange.code is ${err.code},message is ${err.message}`); 4785 } 4786 } 4787 4788 unsubscribeDataChange() { 4789 try { 4790 if (kvStore != null) { 4791 kvStore.off('dsyncComplete', this.call); 4792 } 4793 } catch (err) { 4794 console.error(`Fail to unsubscribeDataChange.code is ${err.code},message is ${err.message}`); 4795 } 4796 } 4797} 4798``` 4799 4800### getSecurityLevel 4801 4802getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void 4803 4804获取数据库的安全级别,使用callback异步回调。 4805 4806**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4807 4808**参数:** 4809 4810| 参数名 | 类型 | 必填 | 说明 | 4811| -------- | ---------------------------------------------------- | ---- | -------------------------------- | 4812| callback | AsyncCallback<[SecurityLevel](#securitylevel)> | 是 | 回调函数。返回数据库的安全级别。 | 4813 4814**错误码:** 4815 4816以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4817 4818| **错误码ID** | **错误信息** | 4819| ------------ | -------------------------------------- | 4820| 15100005 | Database or result set already closed. | 4821 4822**示例:** 4823 4824```js 4825let kvStore; 4826try { 4827 kvStore.getSecurityLevel(function (err, data) { 4828 if (err != undefined) { 4829 console.error(`Fail to get SecurityLevel.code is ${err.code},message is ${err.message}`); 4830 return; 4831 } 4832 console.log('Succeeded in getting securityLevel'); 4833 }); 4834} catch (e) { 4835 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4836} 4837``` 4838 4839### getSecurityLevel 4840 4841getSecurityLevel(): Promise<SecurityLevel> 4842 4843获取数据库的安全级别,使用Promise异步回调。 4844 4845**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4846 4847**返回值:** 4848 4849| 类型 | 说明 | 4850| ---------------------------------------------- | ----------------------------------- | 4851| Promise<[SecurityLevel](#securitylevel)> | Promise对象。返回数据库的安全级别。 | 4852 4853**错误码:** 4854 4855以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4856 4857| **错误码ID** | **错误信息** | 4858| ------------ | -------------------------------------- | 4859| 15100005 | Database or result set already closed. | 4860 4861**示例:** 4862 4863```js 4864let kvStore; 4865try { 4866 kvStore.getSecurityLevel().then((data) => { 4867 console.log('Succeeded in getting securityLevel'); 4868 }).catch((err) => { 4869 console.error(`Fail to get SecurityLevel.code is ${err.code},message is ${err.message}`); 4870 }); 4871} catch (e) { 4872 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 4873} 4874``` 4875 4876## DeviceKVStore 4877 4878设备协同数据库,继承自SingleKVStore,提供查询数据和同步数据的方法。 4879 4880设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。 4881 4882比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。 4883 4884在调用DeviceKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个DeviceKVStore实例。 4885 4886### get 4887 4888get(key: string, callback: AsyncCallback<boolean | string | number | Uint8Array>): void 4889 4890获取本设备指定键的值,使用callback异步回调。 4891 4892**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4893 4894**参数:** 4895 4896| 参数名 | 类型 | 必填 | 说明 | 4897| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 4898| key | string | 是 | 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 4899| callback | AsyncCallback<boolean \| string \| number \| Uint8Array> | 是 | 回调函数。返回获取查询的值。 | 4900 4901**错误码:** 4902 4903以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4904 4905| **错误码ID** | **错误信息** | 4906| ------------ | -------------------------------------- | 4907| 15100003 | Database corrupted. | 4908| 15100004 | Not found. | 4909| 15100005 | Database or result set already closed. | 4910 4911**示例:** 4912 4913```js 4914let kvStore; 4915const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 4916const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 4917try { 4918 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { 4919 if (err != undefined) { 4920 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 4921 return; 4922 } 4923 console.log("Succeeded in putting"); 4924 kvStore.get(KEY_TEST_STRING_ELEMENT, function (err, data) { 4925 if (err != undefined) { 4926 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 4927 return; 4928 } 4929 console.log(`Succeeded in getting data.data=${data}`); 4930 }); 4931 }); 4932} catch (e) { 4933 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 4934} 4935``` 4936 4937### get 4938 4939get(key: string): Promise<boolean | string | number | Uint8Array> 4940 4941获取本设备指定键的值,使用Promise异步回调。 4942 4943**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 4944 4945**参数:** 4946 4947| 参数名 | 类型 | 必填 | 说明 | 4948| ------ | ------ | ---- | ------------------------------------------------------------ | 4949| key | string | 是 | 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 | 4950 4951**返回值:** 4952 4953| 类型 | 说明 | 4954| -------------------------------------------------------- | ------------------------------- | 4955| Promise<Uint8Array \| string \| boolean \| number> | Promise对象。返回获取查询的值。 | 4956 4957**错误码:** 4958 4959以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 4960 4961| **错误码ID** | **错误信息** | 4962| ------------ | -------------------------------------- | 4963| 15100003 | Database corrupted. | 4964| 15100004 | Not found. | 4965| 15100005 | Database or result set already closed. | 4966 4967**示例:** 4968 4969```js 4970let kvStore; 4971const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 4972const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; 4973try { 4974 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { 4975 console.log(`Succeeded in putting data.data=${data}`); 4976 kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => { 4977 console.log(`Succeeded in getting data.data=${data}`); 4978 }).catch((err) => { 4979 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 4980 }); 4981 }).catch((err) => { 4982 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 4983 }); 4984} catch (e) { 4985 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 4986} 4987``` 4988 4989### get 4990 4991get(deviceId: string, key: string, callback: AsyncCallback<boolean | string | number | Uint8Array>): void 4992 4993获取与指定设备ID和key匹配的string值,使用callback异步回调。 4994 4995**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 4996 4997**参数:** 4998 4999| 参数名 | 类型 | 必填 | 说明 | 5000| ----- | ------ | ---- | ----------------------- | 5001| deviceId |string | 是 |标识要查询其数据的设备。 | 5002| key |string | 是 |表示要查询key值的键。 | 5003| callback |AsyncCallback<boolean\|string\|number\|Uint8Array> | 是 |回调函数,返回匹配给定条件的字符串值。 | 5004 5005**错误码:** 5006 5007以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5008 5009| **错误码ID** | **错误信息** | 5010| ------------ | -------------------------------------- | 5011| 15100003 | Database corrupted. | 5012| 15100004 | Not found. | 5013| 15100005 | Database or result set already closed. | 5014 5015**示例:** 5016 5017```js 5018let kvStore; 5019const KEY_TEST_STRING_ELEMENT = 'key_test_string_2'; 5020const VALUE_TEST_STRING_ELEMENT = 'value-string-002'; 5021try { 5022 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err, data) { 5023 if (err != undefined) { 5024 console.error(`Fail to put.code is ${err.code},message is ${err.message}`); 5025 return; 5026 } 5027 console.log('Succeeded in putting'); 5028 kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err, data) { 5029 if (err != undefined) { 5030 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 5031 return; 5032 } 5033 console.log('Succeeded in getting'); 5034 }); 5035 }) 5036} catch (e) { 5037 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 5038} 5039``` 5040 5041### get 5042 5043get(deviceId: string, key: string): Promise<boolean | string | number | Uint8Array> 5044 5045获取与指定设备ID和key匹配的string值,使用Promise异步回调。 5046 5047**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5048 5049**参数:** 5050 5051| 参数名 | 类型 | 必填 | 说明 | 5052| -------- | -------- | ---- | ------------------------ | 5053| deviceId | string | 是 | 标识要查询其数据的设备。 | 5054| key | string | 是 | 表示要查询key值的键。 | 5055 5056**返回值:** 5057 5058| 类型 | 说明 | 5059| ------ | ------- | 5060|Promise<boolean\|string\|number\|Uint8Array> |Promise对象。返回匹配给定条件的字符串值。| 5061 5062**错误码:** 5063 5064以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5065 5066| **错误码ID** | **错误信息** | 5067| ------------ | -------------------------------------- | 5068| 15100003 | Database corrupted. | 5069| 15100004 | Not found. | 5070| 15100005 | Database or result set already closed. | 5071 5072**示例:** 5073 5074```js 5075let kvStore; 5076const KEY_TEST_STRING_ELEMENT = 'key_test_string_2'; 5077const VALUE_TEST_STRING_ELEMENT = 'value-string-002'; 5078try { 5079 kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => { 5080 console.log('Succeeded in putting'); 5081 kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => { 5082 console.log('Succeeded in getting'); 5083 }).catch((err) => { 5084 console.error(`Fail to get.code is ${err.code},message is ${err.message}`); 5085 }); 5086 }).catch((error) => { 5087 console.error(`Fail to put.code is ${error.code},message is ${error.message}`); 5088 }); 5089} catch (e) { 5090 console.error(`Fail to get.code is ${e.code},message is ${e.message}`); 5091} 5092``` 5093 5094### getEntries 5095 5096getEntries(keyPrefix: string, callback: AsyncCallback<Entry[]>): void 5097 5098获取匹配本设备指定键前缀的所有键值对,使用callback异步回调。 5099 5100**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5101 5102**参数:** 5103 5104| 参数名 | 类型 | 必填 | 说明 | 5105| --------- | -------------------------------------- | ---- | ---------------------------------------- | 5106| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5107| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数。返回匹配指定前缀的键值对列表。 | 5108 5109**错误码:** 5110 5111以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5112 5113| **错误码ID** | **错误信息** | 5114| ------------ | -------------------------------------- | 5115| 15100003 | Database corrupted. | 5116| 15100005 | Database or result set already closed. | 5117 5118**示例:** 5119 5120```js 5121let kvStore; 5122try { 5123 let entries = []; 5124 for (var i = 0; i < 10; i++) { 5125 var key = 'batch_test_string_key'; 5126 var entry = { 5127 key: key + i, 5128 value: { 5129 type: distributedKVStore.ValueType.STRING, 5130 value: 'batch_test_string_value' 5131 } 5132 } 5133 entries.push(entry); 5134 } 5135 console.log(`entries: ${entries}`); 5136 kvStore.putBatch(entries, async function (err, data) { 5137 if (err != undefined) { 5138 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 5139 return; 5140 } 5141 console.log('Succeeded in putting Batch'); 5142 kvStore.getEntries('batch_test_string_key', function (err, entries) { 5143 if (err != undefined) { 5144 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 5145 return; 5146 } 5147 console.log('Succeeded in getting Entries'); 5148 console.log(`entries.length: ${entries.length}`); 5149 console.log(`entries[0]: ${entries[0]}`); 5150 }); 5151 }); 5152} catch (e) { 5153 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 5154} 5155``` 5156 5157### getEntries 5158 5159getEntries(keyPrefix: string): Promise<Entry[]> 5160 5161获取匹配本设备指定键前缀的所有键值对,使用Promise异步回调。 5162 5163**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5164 5165**参数:** 5166 5167| 参数名 | 类型 | 必填 | 说明 | 5168| --------- | ------ | ---- | -------------------- | 5169| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5170 5171**返回值:** 5172 5173| 类型 | 说明 | 5174| -------------------------------- | ------------------------------------------- | 5175| Promise<[Entry](#entry)[]> | Promise对象。返回匹配指定前缀的键值对列表。 | 5176 5177**错误码:** 5178 5179以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5180 5181| **错误码ID** | **错误信息** | 5182| ------------ | -------------------------------------- | 5183| 15100003 | Database corrupted. | 5184| 15100005 | Database or result set already closed. | 5185 5186**示例:** 5187 5188```js 5189let kvStore; 5190try { 5191 let entries = []; 5192 for (var i = 0; i < 10; i++) { 5193 var key = 'batch_test_string_key'; 5194 var entry = { 5195 key: key + i, 5196 value: { 5197 type: distributedKVStore.ValueType.STRING, 5198 value: 'batch_test_string_value' 5199 } 5200 } 5201 entries.push(entry); 5202 } 5203 console.log(`entries: ${entries}`); 5204 kvStore.putBatch(entries).then(async (entries) => { 5205 console.log('Succeeded in putting Batch'); 5206 kvStore.getEntries('batch_test_string_key').then((entries) => { 5207 console.log('Succeeded in getting Entries'); 5208 console.log(`PutBatch ${entries}`); 5209 }).catch((err) => { 5210 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 5211 }); 5212 }).catch((err) => { 5213 console.error(`Fail to put Batch.code is ${err.code},message is ${err.message}`); 5214 }); 5215} catch (e) { 5216 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `); 5217} 5218``` 5219 5220### getEntries 5221 5222getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback<Entry[]>): void 5223 5224获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。 5225 5226**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5227 5228**参数:** 5229 5230| 参数名 | 类型 | 必填 | 说明 | 5231| --------- | -------------------------------------- | ---- | ---------------------------------------------- | 5232| deviceId | string | 是 | 标识要查询其数据的设备。 | 5233| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5234| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数,返回满足给定条件的所有键值对的列表。 | 5235 5236**错误码:** 5237 5238以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5239 5240| **错误码ID** | **错误信息** | 5241| ------------ | -------------------------------------- | 5242| 15100003 | Database corrupted. | 5243| 15100005 | Database or result set already closed. | 5244 5245**示例:** 5246 5247```js 5248let kvStore; 5249try { 5250 let entries = []; 5251 for (var i = 0; i < 10; i++) { 5252 var key = 'batch_test_string_key'; 5253 var entry = { 5254 key: key + i, 5255 value: { 5256 type: distributedKVStore.ValueType.STRING, 5257 value: 'batch_test_string_value' 5258 } 5259 } 5260 entries.push(entry); 5261 } 5262 console.log(`entries : ${entries}`); 5263 kvStore.putBatch(entries, async function (err, data) { 5264 if (err != undefined) { 5265 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5266 return; 5267 } 5268 console.log('Succeeded in putting batch'); 5269 kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err, entries) { 5270 if (err != undefined) { 5271 console.error(`Fail to get entries.code is ${err.code},message is ${err.message}`); 5272 return; 5273 } 5274 console.log('Succeeded in getting entries'); 5275 console.log(`entries.length: ${entries.length}`); 5276 console.log(`entries[0]: ${entries[0]}`); 5277 }); 5278 }); 5279} catch (e) { 5280 console.error(`Fail to put batch.code is ${e.code},message is ${e.message}`); 5281} 5282``` 5283 5284### getEntries 5285 5286getEntries(deviceId: string, keyPrefix: string): Promise<Entry[]> 5287 5288获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。 5289 5290**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5291 5292**参数:** 5293 5294| 参数名 | 类型 | 必填 | 说明 | 5295| --------- | -------- | ---- | ------------------------ | 5296| deviceId | string | 是 | 标识要查询其数据的设备。 | 5297| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5298 5299**返回值:** 5300 5301| 类型 | 说明 | 5302| -------------------------------- | ------------------------------------------------- | 5303| Promise<[Entry](#entry)[]> | Promise对象。返回匹配给定条件的所有键值对的列表。 | 5304 5305**错误码:** 5306 5307以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5308 5309| **错误码ID** | **错误信息** | 5310| ------------ | -------------------------------------- | 5311| 15100003 | Database corrupted. | 5312| 15100005 | Database or result set already closed. | 5313 5314**示例:** 5315 5316```js 5317let kvStore; 5318try { 5319 let entries = []; 5320 for (var i = 0; i < 10; i++) { 5321 var key = 'batch_test_string_key'; 5322 var entry = { 5323 key: key + i, 5324 value: { 5325 type: distributedKVStore.ValueType.STRING, 5326 value: 'batch_test_string_value' 5327 } 5328 } 5329 entries.push(entry); 5330 } 5331 console.log(`entries: ${entries}`); 5332 kvStore.putBatch(entries).then(async (err) => { 5333 console.log('Succeeded in putting batch'); 5334 kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => { 5335 console.log('Succeeded in getting entries'); 5336 console.log(`entries.length: ${entries.length}`); 5337 console.log(`entries[0]: ${entries[0]}`); 5338 console.log(`entries[0].value: ${entries[0].value}`); 5339 console.log(`entries[0].value.value: ${entries[0].value.value}`); 5340 }).catch((err) => { 5341 console.error(`Fail to get entries.code is ${err.code},message is ${err.message}`); 5342 }); 5343 }).catch((err) => { 5344 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5345 }); 5346} catch (e) { 5347 console.error(`Fail to put batch.code is ${e.code},message is ${e.message}`); 5348} 5349``` 5350 5351### getEntries 5352 5353getEntries(query: Query, callback: AsyncCallback<Entry[]>): void 5354 5355获取本设备与指定Query对象匹配的键值对列表,使用callback异步回调。 5356 5357**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5358 5359**参数:** 5360 5361| 参数名 | 类型 | 必填 | 说明 | 5362| -------- | -------------------------------------- | ---- | ----------------------------------------------------- | 5363| query | [Query](#query) | 是 | 表示要匹配的键前缀。 | 5364| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数。返回本设备与指定Query对象匹配的键值对列表。 | 5365 5366**错误码:** 5367 5368以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5369 5370| **错误码ID** | **错误信息** | 5371| ------------ | -------------------------------------- | 5372| 15100003 | Database corrupted. | 5373| 15100005 | Database or result set already closed. | 5374 5375**示例:** 5376 5377```js 5378let kvStore; 5379try { 5380 var arr = new Uint8Array([21, 31]); 5381 let entries = []; 5382 for (var i = 0; i < 10; i++) { 5383 var key = 'batch_test_bool_key'; 5384 var entry = { 5385 key: key + i, 5386 value: { 5387 type: distributedKVStore.ValueType.BYTE_ARRAY, 5388 value: arr 5389 } 5390 } 5391 entries.push(entry); 5392 } 5393 console.log(`entries: {entries}`); 5394 kvStore.putBatch(entries, async function (err, data) { 5395 console.log('Succeeded in putting Batch'); 5396 const query = new distributedKVStore.Query(); 5397 query.prefixKey("batch_test"); 5398 kvStore.getEntries(query, function (err, entries) { 5399 if (err != undefined) { 5400 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 5401 return; 5402 } 5403 console.log('Succeeded in getting Entries'); 5404 console.log(`entries.length: ${entries.length}`); 5405 console.log(`entries[0]: ${entries[0]}`); 5406 }); 5407 }); 5408} catch (e) { 5409 console.error(`Fail to get Entries.code is ${e.code},message is ${e.message}`); 5410} 5411``` 5412 5413### getEntries 5414 5415getEntries(query: Query): Promise<Entry[]> 5416 5417获取本设备与指定Query对象匹配的键值对列表,使用Promise异步回调。 5418 5419**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5420 5421**参数:** 5422 5423| 参数名 | 类型 | 必填 | 说明 | 5424| ------ | -------------- | ---- | -------------- | 5425| query | [Query](#query) | 是 | 表示查询对象。 | 5426 5427**返回值:** 5428 5429| 类型 | 说明 | 5430| -------------------------------- | -------------------------------------------------------- | 5431| Promise<[Entry](#entry)[]> | Promise对象。返回本设备与指定Query对象匹配的键值对列表。 | 5432 5433**错误码:** 5434 5435以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5436 5437| **错误码ID** | **错误信息** | 5438| ------------ | -------------------------------------- | 5439| 15100003 | Database corrupted. | 5440| 15100005 | Database or result set already closed. | 5441 5442**示例:** 5443 5444```js 5445let kvStore; 5446try { 5447 var arr = new Uint8Array([21, 31]); 5448 let entries = []; 5449 for (var i = 0; i < 10; i++) { 5450 var key = 'batch_test_bool_key'; 5451 var entry = { 5452 key: key + i, 5453 value: { 5454 type: distributedKVStore.ValueType.BYTE_ARRAY, 5455 value: arr 5456 } 5457 } 5458 entries.push(entry); 5459 } 5460 console.log(`entries: {entries}`); 5461 kvStore.putBatch(entries).then(async (err) => { 5462 console.log('Succeeded in putting Batch'); 5463 const query = new distributedKVStore.Query(); 5464 query.prefixKey("batch_test"); 5465 kvStore.getEntries(query).then((entries) => { 5466 console.log('Succeeded in getting Entries'); 5467 }).catch((err) => { 5468 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`); 5469 }); 5470 }).catch((err) => { 5471 console.error(`Fail to get Entries.code is ${err.code},message is ${err.message}`) 5472 }); 5473 console.log('Succeeded in getting Entries'); 5474} catch (e) { 5475 console.error(`Fail to get Entries.code is ${e.code},message is ${e.message}`); 5476} 5477``` 5478 5479### getEntries 5480 5481getEntries(deviceId: string, query: Query, callback: AsyncCallback<Entry[]>): void 5482 5483获取与指定设备ID和Query对象匹配的键值对列表,使用callback异步回调。 5484 5485**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5486 5487**参数:** 5488 5489| 参数名 | 类型 | 必填 | 说明 | 5490| -------- | -------------------------------------- | ---- | ------------------------------------------------------- | 5491| deviceId | string | 是 | 键值对所属的设备ID。 | 5492| query | [Query](#query) | 是 | 表示查询对象。 | 5493| callback | AsyncCallback<[Entry](#entry)[]> | 是 | 回调函数。返回与指定设备ID和Query对象匹配的键值对列表。 | 5494 5495**错误码:** 5496 5497以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5498 5499| **错误码ID** | **错误信息** | 5500| ------------ | -------------------------------------- | 5501| 15100003 | Database corrupted. | 5502| 15100005 | Database or result set already closed. | 5503 5504**示例:** 5505 5506```js 5507let kvStore; 5508try { 5509 var arr = new Uint8Array([21, 31]); 5510 let entries = []; 5511 for (var i = 0; i < 10; i++) { 5512 var key = 'batch_test_bool_key'; 5513 var entry = { 5514 key: key + i, 5515 value: { 5516 type: distributedKVStore.ValueType.BYTE_ARRAY, 5517 value: arr 5518 } 5519 } 5520 entries.push(entry); 5521 } 5522 console.log(`entries: ${entries}`); 5523 kvStore.putBatch(entries, async function (err, data) { 5524 if (err != undefined) { 5525 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5526 return; 5527 } 5528 console.log('Succeeded in putting batch'); 5529 var query = new distributedKVStore.Query(); 5530 query.deviceId('localDeviceId'); 5531 query.prefixKey("batch_test"); 5532 kvStore.getEntries('localDeviceId', query, function (err, entries) { 5533 if (err != undefined) { 5534 console.error(`Fail to get entries.code is ${err.code},message is ${err.message}`); 5535 return; 5536 } 5537 console.log('Succeeded in getting entries'); 5538 console.log(`entries.length: ${entries.length}`); 5539 console.log(`entries[0]: ${entries[0]}`); 5540 }) 5541 }); 5542 console.log('Succeeded in getting entries'); 5543} catch (e) { 5544 console.error(`Fail to get entries.code is ${e.code},message is ${e.message}`); 5545} 5546``` 5547 5548### getEntries 5549 5550getEntries(deviceId: string, query: Query): Promise<Entry[]> 5551 5552获取与指定设备ID和Query对象匹配的键值对列表,使用Promise异步回调。 5553 5554**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5555 5556**参数:** 5557 5558| 参数名 | 类型 | 必填 | 说明 | 5559| -------- | -------------- | ---- | -------------------- | 5560| deviceId | string | 是 | 键值对所属的设备ID。 | 5561| query | [Query](#query) | 是 | 表示查询对象。 | 5562 5563**返回值:** 5564 5565| 类型 | 说明 | 5566| -------------------------------- | ---------------------------------------------------------- | 5567| Promise<[Entry](#entry)[]> | Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。 | 5568 5569**错误码:** 5570 5571以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5572 5573| **错误码ID** | **错误信息** | 5574| ------------ | -------------------------------------- | 5575| 15100003 | Database corrupted. | 5576| 15100005 | Database or result set already closed. | 5577 5578**示例:** 5579 5580```js 5581let kvStore; 5582try { 5583 var arr = new Uint8Array([21, 31]); 5584 let entries = []; 5585 for (var i = 0; i < 10; i++) { 5586 var key = 'batch_test_bool_key'; 5587 var entry = { 5588 key: key + i, 5589 value: { 5590 type: distributedKVStore.ValueType.BYTE_ARRAY, 5591 value: arr 5592 } 5593 } 5594 entries.push(entry); 5595 } 5596 console.log(`entries: ${entries}`); 5597 kvStore.putBatch(entries).then(async (err) => { 5598 console.log('Succeeded in putting batch'); 5599 var query = new distributedKVStore.Query(); 5600 query.deviceId('localDeviceId'); 5601 query.prefixKey("batch_test"); 5602 kvStore.getEntries('localDeviceId', query).then((entries) => { 5603 console.log('Succeeded in getting entries'); 5604 }).catch((err) => { 5605 console.error(`Fail to get entries.code is ${err.code},message is ${err.message}`); 5606 }); 5607 }).catch((err) => { 5608 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5609 }); 5610 console.log('Succeeded in getting entries'); 5611} catch (e) { 5612 console.error(`Fail to get entries.code is ${e.code},message is ${e.message}`); 5613} 5614``` 5615 5616### getResultSet 5617 5618getResultSet(keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void 5619 5620从DeviceKVStore数据库中获取本设备具有指定前缀的结果集,使用callback异步回调。 5621 5622**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5623 5624**参数:** 5625 5626| 参数名 | 类型 | 必填 | 说明 | 5627| --------- | ---------------------------------------------------------- | ---- | ------------------------------------ | 5628| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5629| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数。返回具有指定前缀的结果集。 | 5630 5631**错误码:** 5632 5633以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5634 5635| **错误码ID** | **错误信息** | 5636| ------------ | -------------------------------------- | 5637| 15100003 | Database corrupted. | 5638| 15100005 | Database or result set already closed. | 5639 5640**示例:** 5641 5642```js 5643let kvStore; 5644try { 5645 let resultSet; 5646 let entries = []; 5647 for (var i = 0; i < 10; i++) { 5648 var key = 'batch_test_string_key'; 5649 var entry = { 5650 key: key + i, 5651 value: { 5652 type: distributedKVStore.ValueType.STRING, 5653 value: 'batch_test_string_value' 5654 } 5655 } 5656 entries.push(entry); 5657 } 5658 kvStore.putBatch(entries, async function (err, data) { 5659 if (err != undefined) { 5660 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5661 return; 5662 } 5663 console.log('Succeeded in putting batch'); 5664 kvStore.getResultSet('batch_test_string_key', async function (err, result) { 5665 if (err != undefined) { 5666 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 5667 return; 5668 } 5669 console.log('Succeeded in getting result set'); 5670 resultSet = result; 5671 kvStore.closeResultSet(resultSet, function (err, data) { 5672 if (err != undefined) { 5673 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 5674 return; 5675 } 5676 console.log('Succeeded in closing result set'); 5677 }) 5678 }); 5679 }); 5680} catch (e) { 5681 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`); 5682} 5683``` 5684 5685### getResultSet 5686 5687getResultSet(keyPrefix: string): Promise<KVStoreResultSet> 5688 5689从DeviceKVStore数据库中获取本设备具有指定前缀的结果集,使用Promise异步回调。 5690 5691**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 5692 5693**参数:** 5694 5695| 参数名 | 类型 | 必填 | 说明 | 5696| --------- | ------ | ---- | -------------------- | 5697| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5698 5699**返回值:** 5700 5701| 类型 | 说明 | 5702| ---------------------------------------------------- | --------------------------------------- | 5703| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。返回具有指定前缀的结果集。 | 5704 5705**错误码:** 5706 5707以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5708 5709| **错误码ID** | **错误信息** | 5710| ------------ | -------------------------------------- | 5711| 15100003 | Database corrupted. | 5712| 15100005 | Database or result set already closed. | 5713 5714**示例:** 5715 5716```js 5717let kvStore; 5718try { 5719 let resultSet; 5720 let entries = []; 5721 for (var i = 0; i < 10; i++) { 5722 var key = 'batch_test_string_key'; 5723 var entry = { 5724 key: key + i, 5725 value: { 5726 type: distributedKVStore.ValueType.STRING, 5727 value: 'batch_test_string_value' 5728 } 5729 } 5730 entries.push(entry); 5731 } 5732 kvStore.putBatch(entries).then(async (err) => { 5733 console.log('Succeeded in putting batch'); 5734 }).catch((err) => { 5735 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5736 }); 5737 kvStore.getResultSet('batch_test_string_key').then((result) => { 5738 console.log('Succeeded in getting result set'); 5739 resultSet = result; 5740 }).catch((err) => { 5741 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 5742 }); 5743 kvStore.closeResultSet(resultSet).then((err) => { 5744 console.log('Succeeded in closing result set'); 5745 }).catch((err) => { 5746 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 5747 }); 5748} catch (e) { 5749 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 5750} 5751``` 5752 5753### getResultSet 5754 5755getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void 5756 5757获取与指定设备ID和key前缀匹配的KVStoreResultSet对象,使用callback异步回调。 5758 5759**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5760 5761**参数:** 5762 5763| 参数名 | 类型 | 必填 | 说明 | 5764| --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 5765| deviceId | string | 是 | 标识要查询其数据的设备。 | 5766| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5767| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数。返回与指定设备ID和key前缀匹配的KVStoreResultSet对象。 | 5768 5769**错误码:** 5770 5771以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5772 5773| **错误码ID** | **错误信息** | 5774| ------------ | -------------------------------------- | 5775| 15100003 | Database corrupted. | 5776| 15100005 | Database or result set already closed. | 5777 5778**示例:** 5779 5780```js 5781let kvStore; 5782try { 5783 let resultSet; 5784 kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) { 5785 if (err != undefined) { 5786 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 5787 return; 5788 } 5789 console.log('Succeeded in getting resultSet'); 5790 resultSet = result; 5791 kvStore.closeResultSet(resultSet, function (err, data) { 5792 if (err != undefined) { 5793 console.error(`Fail to close resultSet.code is ${err.code},message is ${err.message}`); 5794 return; 5795 } 5796 console.log('Succeeded in closing resultSet'); 5797 }) 5798 }); 5799} catch (e) { 5800 console.error(`Fail to get resultSet.code is ${e.code},message is ${e.message}`); 5801} 5802``` 5803 5804### getResultSet 5805 5806getResultSet(deviceId: string, keyPrefix: string): Promise<KVStoreResultSet> 5807 5808获取与指定设备ID和key前缀匹配的KVStoreResultSet对象,使用Promise异步回调。 5809 5810**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5811 5812**参数:** 5813 5814| 参数名 | 类型 | 必填 | 说明 | 5815| --------- | -------- | ---- | ------------------------ | 5816| deviceId | string | 是 | 标识要查询其数据的设备。 | 5817| keyPrefix | string | 是 | 表示要匹配的键前缀。 | 5818 5819**返回值:** 5820 5821| 类型 | 说明 | 5822| ------------------------------------------------------ | ------------------------------------------------------------ | 5823| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。返回与指定设备ID和key前缀匹配的KVStoreResultSet对象。 | 5824 5825**错误码:** 5826 5827以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5828 5829| **错误码ID** | **错误信息** | 5830| ------------ | -------------------------------------- | 5831| 15100003 | Database corrupted. | 5832| 15100005 | Database or result set already closed. | 5833 5834**示例:** 5835 5836```js 5837let kvStore; 5838try { 5839 let resultSet; 5840 kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => { 5841 console.log('Succeeded in getting resultSet'); 5842 resultSet = result; 5843 }).catch((err) => { 5844 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 5845 }); 5846 kvStore.closeResultSet(resultSet).then((err) => { 5847 console.log('Succeeded in closing resultSet'); 5848 }).catch((err) => { 5849 console.error(`Fail to close resultSet.code is ${err.code},message is ${err.message}`); 5850 }); 5851} catch (e) { 5852 console.error(`Fail to get resultSet.code is ${e.code},message is ${e.message}`); 5853} 5854``` 5855 5856### getResultSet 5857 5858getResultSet(deviceId: string, query: Query, callback: AsyncCallback<KVStoreResultSet>): void 5859 5860获取与指定设备ID和Query对象匹配的KVStoreResultSet对象,使用callback异步回调。 5861 5862**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5863 5864**参数:** 5865 5866| 参数名 | 类型 | 必填 | 说明 | 5867| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 5868| deviceId | string | 是 | KVStoreResultSet对象所属的设备ID。 | 5869| query | [Query](#query) | 是 | 表示查询对象。 | 5870| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数。返回与指定设备ID和Query对象匹配的KVStoreResultSet对象。 | 5871 5872**错误码:** 5873 5874以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5875 5876| **错误码ID** | **错误信息** | 5877| ------------ | -------------------------------------- | 5878| 15100003 | Database corrupted. | 5879| 15100005 | Database or result set already closed. | 5880 5881**示例:** 5882 5883```js 5884let kvStore; 5885try { 5886 let resultSet; 5887 let entries = []; 5888 for (var i = 0; i < 10; i++) { 5889 var key = 'batch_test_string_key'; 5890 var entry = { 5891 key: key + i, 5892 value: { 5893 type: distributedKVStore.ValueType.STRING, 5894 value: 'batch_test_string_value' 5895 } 5896 } 5897 entries.push(entry); 5898 } 5899 kvStore.putBatch(entries, async function (err, data) { 5900 if (err != undefined) { 5901 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5902 return; 5903 } 5904 console.log('Succeeded in putting batch'); 5905 const query = new distributedKVStore.Query(); 5906 query.prefixKey("batch_test"); 5907 kvStore.getResultSet('localDeviceId', query, async function (err, result) { 5908 if (err != undefined) { 5909 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 5910 return; 5911 } 5912 console.log('Succeeded in getting resultSet'); 5913 resultSet = result; 5914 kvStore.closeResultSet(resultSet, function (err, data) { 5915 if (err != undefined) { 5916 console.error(`Fail to close resultSet.code is ${err.code},message is ${err.message}`); 5917 return; 5918 } 5919 console.log('Succeeded in closing resultSet'); 5920 }) 5921 }); 5922 }); 5923} catch (e) { 5924 console.error(`Fail to get resultSet.code is ${e.code},message is ${e.message}`); 5925} 5926``` 5927 5928### getResultSet 5929 5930getResultSet(deviceId: string, query: Query): Promise<KVStoreResultSet> 5931 5932获取与指定设备ID和Query对象匹配的KVStoreResultSet对象,使用Promise异步回调。 5933 5934**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 5935 5936**参数:** 5937 5938| 参数名 | 类型 | 必填 | 说明 | 5939| -------- | -------------- | ---- | ---------------------------------- | 5940| deviceId | string | 是 | KVStoreResultSet对象所属的设备ID。 | 5941| query | [Query](#query) | 是 | 表示查询对象。 | 5942 5943**返回值:** 5944 5945| 类型 | 说明 | 5946| ------------------------------------------------------ | ------------------------------------------------------------ | 5947| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。返回与指定设备ID和Query对象匹配的KVStoreResultSet对象。 | 5948 5949**错误码:** 5950 5951以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 5952 5953| **错误码ID** | **错误信息** | 5954| ------------ | -------------------------------------- | 5955| 15100003 | Database corrupted. | 5956| 15100005 | Database or result set already closed. | 5957 5958**示例:** 5959 5960```js 5961let kvStore; 5962try { 5963 let resultSet; 5964 let entries = []; 5965 for (var i = 0; i < 10; i++) { 5966 var key = 'batch_test_string_key'; 5967 var entry = { 5968 key: key + i, 5969 value: { 5970 type: distributedKVStore.ValueType.STRING, 5971 value: 'batch_test_string_value' 5972 } 5973 } 5974 entries.push(entry); 5975 } 5976 kvStore.putBatch(entries).then(async (err) => { 5977 console.log('Succeeded in putting batch'); 5978 }).catch((err) => { 5979 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 5980 }); 5981 const query = new distributedKVStore.Query(); 5982 query.prefixKey("batch_test"); 5983 kvStore.getResultSet('localDeviceId', query).then((result) => { 5984 console.log('Succeeded in getting resultSet'); 5985 resultSet = result; 5986 }).catch((err) => { 5987 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 5988 }); 5989 query.deviceId('localDeviceId'); 5990 console.log("GetResultSet " + query.getSqlLike()); 5991 kvStore.closeResultSet(resultSet).then((err) => { 5992 console.log('Succeeded in closing resultSet'); 5993 }).catch((err) => { 5994 console.error(`Fail to close resultSet.code is ${err.code},message is ${err.message}`); 5995 }); 5996 5997} catch (e) { 5998 console.error(`Fail to get resultSet.code is ${e.code},message is ${e.message}`); 5999} 6000``` 6001 6002### getResultSet 6003 6004getResultSet(query: Query): Promise<KVStoreResultSet> 6005 6006获取与本设备指定Query对象匹配的KVStoreResultSet对象,使用Promise异步回调。 6007 6008**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 6009 6010**参数:** 6011 6012| 参数名 | 类型 | 必填 | 说明 | 6013| ------ | -------------- | ---- | -------------- | 6014| query | [Query](#query) | 是 | 表示查询对象。 | 6015 6016**返回值:** 6017 6018| 类型 | 说明 | 6019| ---------------------------------------------------- | ------------------------------------------------------------ | 6020| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。获取与本设备指定Query对象匹配的KVStoreResultSet对象。 | 6021 6022**错误码:** 6023 6024以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6025 6026| **错误码ID** | **错误信息** | 6027| ------------ | -------------------------------------- | 6028| 15100003 | Database corrupted. | 6029| 15100005 | Database or result set already closed. | 6030 6031**示例:** 6032 6033```js 6034let kvStore; 6035try { 6036 let resultSet; 6037 let entries = []; 6038 for (var i = 0; i < 10; i++) { 6039 var key = 'batch_test_string_key'; 6040 var entry = { 6041 key: key + i, 6042 value: { 6043 type: distributedKVStore.ValueType.STRING, 6044 value: 'batch_test_string_value' 6045 } 6046 } 6047 entries.push(entry); 6048 } 6049 kvStore.putBatch(entries).then(async (err) => { 6050 console.log('Succeeded in putting batch'); 6051 }).catch((err) => { 6052 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 6053 }); 6054 const query = new distributedKVStore.Query(); 6055 query.prefixKey("batch_test"); 6056 kvStore.getResultSet(query).then((result) => { 6057 console.log('Succeeded in getting result set'); 6058 resultSet = result; 6059 }).catch((err) => { 6060 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 6061 }); 6062} catch (e) { 6063 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6064} 6065``` 6066 6067### getResultSet 6068 6069getResultSet(deviceId: string, query: Query): Promise<KVStoreResultSet> 6070 6071获取与指定设备ID和Query对象匹配的KVStoreResultSet对象,使用Promise异步回调。 6072 6073**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 6074 6075**参数:** 6076 6077| 参数名 | 类型 | 必填 | 说明 | 6078| -------- | -------------- | ---- | ---------------------------------- | 6079| deviceId | string | 是 | KVStoreResultSet对象所属的设备ID。 | 6080| query | [Query](#query) | 是 | 表示查询对象。 | 6081 6082**返回值:** 6083 6084| 类型 | 说明 | 6085| ---------------------------------------------------- | ------------------------------------------------------------ | 6086| Promise<[KVStoreResultSet](#kvstoreresultset)> | Promise对象。返回与指定设备ID和Query对象匹配的KVStoreResultSet对象。 | 6087 6088**错误码:** 6089 6090以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6091 6092| **错误码ID** | **错误信息** | 6093| ------------ | -------------------------------------- | 6094| 15100003 | Database corrupted. | 6095| 15100005 | Database or result set already closed. | 6096 6097**示例:** 6098 6099```js 6100let kvStore; 6101try { 6102 let resultSet; 6103 let entries = []; 6104 for (var i = 0; i < 10; i++) { 6105 var key = 'batch_test_string_key'; 6106 var entry = { 6107 key: key + i, 6108 value: { 6109 type: distributedKVStore.ValueType.STRING, 6110 value: 'batch_test_string_value' 6111 } 6112 } 6113 entries.push(entry); 6114 } 6115 kvStore.putBatch(entries).then(async (err) => { 6116 console.log('Succeeded in putting batch'); 6117 }).catch((err) => { 6118 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 6119 }); 6120 const query = new distributedKVStore.Query(); 6121 query.prefixKey("batch_test"); 6122 kvStore.getResultSet('localDeviceId', query).then((result) => { 6123 console.log('Succeeded in getting resultSet'); 6124 resultSet = result; 6125 }).catch((err) => { 6126 console.error(`Fail to get resultSet.code is ${err.code},message is ${err.message}`); 6127 }); 6128 query.deviceId('localDeviceId'); 6129 console.log("GetResultSet " + query.getSqlLike()); 6130 kvStore.closeResultSet(resultSet).then((err) => { 6131 console.log('Succeeded in closing resultSet'); 6132 }).catch((err) => { 6133 console.error(`Fail to close resultSet.code is ${err.code},message is ${err.message}`); 6134 }); 6135 6136} catch (e) { 6137 console.error(`Fail to get resultSet.code is ${e.code},message is ${e.message}`); 6138} 6139``` 6140 6141### getResultSet 6142 6143getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 6144 6145获取与本设备指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 6146 6147**系统接口:** 此接口为系统接口。 6148 6149**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 6150 6151**参数:** 6152 6153| 参数名 | 类型 | 必填 | 说明 | 6154| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 6155| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 6156| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 6157 6158**错误码:** 6159 6160以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6161 6162| **错误码ID** | **错误信息** | 6163| ------------ | -------------------------------------- | 6164| 15100003 | Database corrupted. | 6165| 15100005 | Database or result set already closed. | 6166 6167**示例:** 6168 6169```js 6170import dataSharePredicates from '@ohos.data.dataSharePredicates'; 6171 6172let kvStore; 6173try { 6174 let resultSet; 6175 let predicates = new dataSharePredicates.DataSharePredicates(); 6176 predicates.prefixKey("batch_test_string_key"); 6177 kvStore.getResultSet(predicates, async function (err, result) { 6178 if (err != undefined) { 6179 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 6180 return; 6181 } 6182 console.log('Succeeded in getting result set'); 6183 resultSet = result; 6184 kvStore.closeResultSet(resultSet, function (err, data) { 6185 if (err != undefined) { 6186 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 6187 return; 6188 } 6189 console.log('Succeeded in closing result set'); 6190 }) 6191 }); 6192} catch (e) { 6193 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6194} 6195``` 6196 6197### getResultSet 6198 6199getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 6200 6201获取与本设备指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 6202 6203**系统接口:** 此接口为系统接口。 6204 6205**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 6206 6207**参数:** 6208 6209| 参数名 | 类型 | 必填 | 说明 | 6210| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 6211| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 6212 6213**返回值:** 6214 6215| 类型 | 说明 | 6216| ---------------------------------------------------- | ------------------------- | 6217| Promise<[KVStoreResultSet](#kvstoreresultset)> | 无返回结果的Promise对象。 | 6218 6219**错误码:** 6220 6221以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6222 6223| **错误码ID** | **错误信息** | 6224| ------------ | -------------------------------------- | 6225| 15100003 | Database corrupted. | 6226| 15100005 | Database or result set already closed. | 6227 6228**示例:** 6229 6230```js 6231import dataSharePredicates from '@ohos.data.dataSharePredicates'; 6232 6233let kvStore; 6234try { 6235 let resultSet; 6236 let predicates = new dataSharePredicates.DataSharePredicates(); 6237 predicates.prefixKey("batch_test_string_key"); 6238 kvStore.getResultSet(predicates).then((result) => { 6239 console.log('Succeeded in getting result set'); 6240 resultSet = result; 6241 }).catch((err) => { 6242 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 6243 }); 6244 kvStore.closeResultSet(resultSet).then((err) => { 6245 console.log('Succeeded in closing result set'); 6246 }).catch((err) => { 6247 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 6248 }); 6249} catch (e) { 6250 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6251} 6252``` 6253 6254### getResultSet 6255 6256getResultSet(deviceId: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 6257 6258获取与指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 6259 6260**系统接口:** 此接口为系统接口。 6261 6262**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 6263 6264**参数:** 6265 6266| 参数名 | 类型 | 必填 | 说明 | 6267| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 6268| deviceId | string | 是 | 标识要查询其数据的设备。 | 6269| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 6270| callback | AsyncCallback<[KVStoreResultSet](#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 6271 6272**错误码:** 6273 6274以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6275 6276| **错误码ID** | **错误信息** | 6277| ------------ | -------------------------------------- | 6278| 15100003 | Database corrupted. | 6279| 15100005 | Database or result set already closed. | 6280 6281**示例:** 6282 6283```js 6284import dataSharePredicates from '@ohos.data.dataSharePredicates'; 6285 6286let kvStore; 6287try { 6288 let resultSet; 6289 let predicates = new dataSharePredicates.DataSharePredicates(); 6290 predicates.prefixKey("batch_test_string_key"); 6291 kvStore.getResultSet('localDeviceId', predicates, async function (err, result) { 6292 if (err != undefined) { 6293 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 6294 return; 6295 } 6296 console.log('Succeeded in getting result set'); 6297 resultSet = result; 6298 kvStore.closeResultSet(resultSet, function (err, data) { 6299 if (err != undefined) { 6300 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 6301 return; 6302 } 6303 console.log('Succeeded in closing result set'); 6304 }) 6305 }); 6306} catch (e) { 6307 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6308} 6309``` 6310 6311### getResultSet 6312 6313getResultSet(deviceId: string, predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 6314 6315获取与指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 6316 6317**系统接口:** 此接口为系统接口。 6318 6319**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 6320 6321**参数:** 6322 6323| 参数名 | 类型 | 必填 | 说明 | 6324| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 6325| deviceId | string | 是 | 标识要查询其数据的设备。 | 6326| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 6327 6328**返回值:** 6329 6330| 类型 | 说明 | 6331| ---------------------------------------------------- | ------------------------- | 6332| Promise<[KVStoreResultSet](#kvstoreresultset)> | 无返回结果的Promise对象。 | 6333 6334**错误码:** 6335 6336以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6337 6338| **错误码ID** | **错误信息** | 6339| ------------ | -------------------------------------- | 6340| 15100003 | Database corrupted. | 6341| 15100005 | Database or result set already closed. | 6342 6343**示例:** 6344 6345```js 6346import dataSharePredicates from '@ohos.data.dataSharePredicates'; 6347let kvStore; 6348try { 6349 let resultSet; 6350 let predicates = new dataSharePredicates.DataSharePredicates(); 6351 predicates.prefixKey("batch_test_string_key"); 6352 kvStore.getResultSet('localDeviceId', predicates).then((result) => { 6353 console.log('Succeeded in getting result set'); 6354 resultSet = result; 6355 }).catch((err) => { 6356 console.error(`Fail to get resultset.code is ${err.code},message is ${err.message}`); 6357 }); 6358 kvStore.closeResultSet(resultSet).then((err) => { 6359 console.log('Succeeded in closing result set'); 6360 }).catch((err) => { 6361 console.error(`Fail to close resultset.code is ${err.code},message is ${err.message}`); 6362 }); 6363} catch (e) { 6364 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6365} 6366``` 6367 6368### getResultSize 6369 6370getResultSize(query: Query, callback: AsyncCallback<number>): void 6371 6372获取与本设备指定Query对象匹配的结果数,使用callback异步回调。 6373 6374**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 6375 6376**参数:** 6377 6378| 参数名 | 类型 | 必填 | 说明 | 6379| -------- | --------------------------- | ---- | ------------------------------------------------- | 6380| query | [Query](#query) | 是 | 表示查询对象。 | 6381| callback | AsyncCallback<number> | 是 | 回调函数。返回与本设备指定Query对象匹配的结果数。 | 6382 6383**错误码:** 6384 6385以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6386 6387| **错误码ID** | **错误信息** | 6388| ------------ | -------------------------------------- | 6389| 15100003 | Database corrupted. | 6390| 15100005 | Database or result set already closed. | 6391 6392**示例:** 6393 6394```js 6395let kvStore; 6396try { 6397 let entries = []; 6398 for (var i = 0; i < 10; i++) { 6399 var key = 'batch_test_string_key'; 6400 var entry = { 6401 key: key + i, 6402 value: { 6403 type: distributedKVStore.ValueType.STRING, 6404 value: 'batch_test_string_value' 6405 } 6406 } 6407 entries.push(entry); 6408 } 6409 kvStore.putBatch(entries, async function (err, data) { 6410 console.log('Succeeded in putting batch'); 6411 const query = new distributedKVStore.Query(); 6412 query.prefixKey("batch_test"); 6413 kvStore.getResultSize(query, async function (err, resultSize) { 6414 if (err != undefined) { 6415 console.error(`Fail to get result size.code is ${err.code},message is ${err.message}`); 6416 return; 6417 } 6418 console.log('Succeeded in getting result set size'); 6419 }); 6420 }); 6421} catch (e) { 6422 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6423} 6424``` 6425 6426### getResultSize 6427 6428getResultSize(query: Query): Promise<number> 6429 6430获取与本设备指定Query对象匹配的结果数,使用Promise异步回调。 6431 6432**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 6433 6434**参数:** 6435 6436| 参数名 | 类型 | 必填 | 说明 | 6437| ------ | -------------- | ---- | -------------- | 6438| query | [Query](#query) | 是 | 表示查询对象。 | 6439 6440**返回值:** 6441 6442| 类型 | 说明 | 6443| --------------------- | ---------------------------------------------------- | 6444| Promise<number> | Promise对象。获取与本设备指定Query对象匹配的结果数。 | 6445 6446**错误码:** 6447 6448以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6449 6450| **错误码ID** | **错误信息** | 6451| ------------ | -------------------------------------- | 6452| 15100003 | Database corrupted. | 6453| 15100005 | Database or result set already closed. | 6454 6455**示例:** 6456 6457```js 6458let kvStore; 6459try { 6460 let entries = []; 6461 for (var i = 0; i < 10; i++) { 6462 var key = 'batch_test_string_key'; 6463 var entry = { 6464 key: key + i, 6465 value: { 6466 type: distributedKVStore.ValueType.STRING, 6467 value: 'batch_test_string_value' 6468 } 6469 } 6470 entries.push(entry); 6471 } 6472 kvStore.putBatch(entries).then(async (err) => { 6473 console.log('Succeeded in putting batch'); 6474 }).catch((err) => { 6475 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 6476 }); 6477 const query = new distributedKVStore.Query(); 6478 query.prefixKey("batch_test"); 6479 kvStore.getResultSize(query).then((resultSize) => { 6480 console.log('Succeeded in getting result set size'); 6481 }).catch((err) => { 6482 console.error(`Fail to get result size.code is ${err.code},message is ${err.message}`); 6483 }); 6484} catch (e) { 6485 console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`); 6486} 6487``` 6488 6489### getResultSize 6490 6491getResultSize(deviceId: string, query: Query, callback: AsyncCallback<number>): void; 6492 6493获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。 6494 6495**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 6496 6497**参数:** 6498 6499| 参数名 | 类型 | 必填 | 说明 | 6500| -------- | --------------------------- | ---- | --------------------------------------------------- | 6501| deviceId | string | 是 | KVStoreResultSet对象所属的设备ID。 | 6502| query | [Query](#query) | 是 | 表示查询对象。 | 6503| callback | AsyncCallback<number> | 是 | 回调函数。返回与指定设备ID和Query对象匹配的结果数。 | 6504 6505**错误码:** 6506 6507以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6508 6509| **错误码ID** | **错误信息** | 6510| ------------ | -------------------------------------- | 6511| 15100003 | Database corrupted. | 6512| 15100005 | Database or result set already closed. | 6513 6514**示例:** 6515 6516```js 6517let kvStore; 6518try { 6519 let entries = []; 6520 for (var i = 0; i < 10; i++) { 6521 var key = 'batch_test_string_key'; 6522 var entry = { 6523 key: key + i, 6524 value: { 6525 type: distributedKVStore.ValueType.STRING, 6526 value: 'batch_test_string_value' 6527 } 6528 } 6529 entries.push(entry); 6530 } 6531 kvStore.putBatch(entries, async function (err, data) { 6532 if (err != undefined) { 6533 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 6534 return; 6535 } 6536 console.log('Succeeded in putting batch'); 6537 const query = new distributedKVStore.Query(); 6538 query.prefixKey("batch_test"); 6539 kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) { 6540 if (err != undefined) { 6541 console.error(`Fail to get resultSize.code is ${err.code},message is ${err.message}`); 6542 return; 6543 } 6544 console.log('Succeeded in getting resultSize'); 6545 ; 6546 }); 6547 }); 6548} catch (e) { 6549 console.error(`Fail to get resultSize.code is ${e.code},message is ${e.message}`); 6550} 6551``` 6552 6553### getResultSize 6554 6555getResultSize(deviceId: string, query: Query): Promise<number> 6556 6557获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。 6558 6559**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore 6560 6561**参数:** 6562 6563| 参数名 | 类型 | 必填 | 说明 | 6564| -------- | -------------- | ---- | ---------------------------------- | 6565| deviceId | string | 是 | KVStoreResultSet对象所属的设备ID。 | 6566| query | [Query](#query) | 是 | 表示查询对象。 | 6567 6568**返回值:** 6569 6570| 类型 | 说明 | 6571| --------------------- | ------------------------------------------------------ | 6572| Promise<number> | Promise对象。返回与指定设备ID和Query对象匹配的结果数。 | 6573 6574**错误码:** 6575 6576以下错误码的详细介绍请参见[分布式键值数据库错误码](../errorcodes/errorcode-distributedKVStore.md)。 6577 6578| **错误码ID** | **错误信息** | 6579| ------------ | -------------------------------------- | 6580| 15100003 | Database corrupted. | 6581| 15100005 | Database or result set already closed. | 6582 6583**示例:** 6584 6585```js 6586let kvStore; 6587try { 6588 let entries = []; 6589 for (var i = 0; i < 10; i++) { 6590 var key = 'batch_test_string_key'; 6591 var entry = { 6592 key: key + i, 6593 value: { 6594 type: distributedKVStore.ValueType.STRING, 6595 value: 'batch_test_string_value' 6596 } 6597 } 6598 entries.push(entry); 6599 } 6600 kvStore.putBatch(entries).then(async (err) => { 6601 console.log('Succeeded in putting batch'); 6602 }).catch((err) => { 6603 console.error(`Fail to put batch.code is ${err.code},message is ${err.message}`); 6604 }); 6605 var query = new distributedKVStore.Query(); 6606 query.prefixKey("batch_test"); 6607 kvStore.getResultSize('localDeviceId', query).then((resultSize) => { 6608 console.log('Succeeded in getting resultSize'); 6609 ; 6610 }).catch((err) => { 6611 console.error(`Fail to get resultSize.code is ${err.code},message is ${err.message}`); 6612 }); 6613} catch (e) { 6614 console.error(`Fail to get resultSize.code is ${e.code},message is ${e.message}`); 6615} 6616``` 6617