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