js-apis-distributed-data.md 147.2 KB
Newer Older
1
# 分布式数据管理
Z
zengyawen 已提交
2

G
ge-yafang 已提交
3 4 5 6 7 8 9 10 11 12
分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个接口,应用程序可将数据保存到分布式数据库中,并可对分布式数据库中的数据进行增加、删除、修改、查询、同步等操作。

该模块提供以下分布式数据管理相关的常用功能:

- [KVManager](#kvmanager):数据管理实例,用于获取KVStore的相关信息。
- [KvStoreResultSet<sup>8+</sup>](#kvstoreresultset8):提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。
- [Query<sup>8+</sup>](#query8):使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。
- [KVStore](#kvstore):KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。
- [SingleKVStore](#singlekvstore):单版本分布式数据库,继承自[KVStore](#kvstore),不对数据所属设备进行区分,提供查询数据和同步数据的方法。
- [DeviceKVStore<sup>8+</sup>](#devicekvstore8):设备协同数据库,继承自[KVStore](#kvstore),以设备维度对数据进行区分,提供查询数据和同步数据的方法。
G
ge-yafang 已提交
13

G
ge-yafang 已提交
14
>**说明:** 
G
ge-yafang 已提交
15
>
A
asfasdff 已提交
16
>本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
17

18

19
## 导入模块
Z
zengyawen 已提交
20

G
ge-yafang 已提交
21
```js
Z
zengyawen 已提交
22 23 24 25
import distributedData from '@ohos.data.distributedData';
```


26
## distributedData.createKVManager
Z
zengyawen 已提交
27

A
asfasdff 已提交
28
createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt;): void
Z
zengyawen 已提交
29

G
ge-yafang 已提交
30
创建一个KVManager对象实例,用于管理数据库对象,使用callback异步回调。
Z
zengyawen 已提交
31

G
ge-yafang 已提交
32
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
33

G
ge-yafang 已提交
34
**参数:**
35 36 37 38

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| config | [KVManagerConfig](#kvmanagerconfig) | 是  | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
G
ge-yafang 已提交
39
| callback | AsyncCallback&lt;[KVManager](#kvmanager)&gt; | 是  | 回调函数。返回创建的KVManager对象实例。 |
A
asfasdff 已提交
40

G
ge-yafang 已提交
41
**示例:**
G
ge-yafang 已提交
42
```js
G
ge-yafang 已提交
43 44 45 46 47 48 49
let kvManager;
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
50 51
        }
    }
G
ge-yafang 已提交
52 53 54 55 56 57 58 59 60 61 62 63
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
        if (err) {
            console.log("createKVManager err: "  + JSON.stringify(err));
            return;
        }
        console.log("createKVManager success");
        kvManager = manager;
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
64

65
## distributedData.createKVManager
A
asfasdff 已提交
66

A
asfasdff 已提交
67
createKVManager(config: KVManagerConfig): Promise&lt;KVManager&gt;
Z
zengyawen 已提交
68

G
ge-yafang 已提交
69
创建一个KVManager对象实例,用于管理数据库对象,使用Promise异步回调。
Z
zengyawen 已提交
70

G
ge-yafang 已提交
71
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
72

G
ge-yafang 已提交
73
**参数:**
Z
zengyawen 已提交
74

75 76 77
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| config |[KVManagerConfig](#kvmanager) | 是  | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
Z
zengyawen 已提交
78

G
ge-yafang 已提交
79
**返回值:**
A
asfasdff 已提交
80

81 82
| 类型 | 说明 |
| -------- | -------- |
G
ge-yafang 已提交
83
| Promise&lt;[KVManager](#kvmanager)&gt; | Promise对象。返回创建的KVManager对象实例。 |
Z
zengyawen 已提交
84

G
ge-yafang 已提交
85
**示例:**
A
asfasdff 已提交
86

G
ge-yafang 已提交
87
```js
G
ge-yafang 已提交
88 89 90 91 92 93 94
let kvManager;
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
95 96
        }
    }
G
ge-yafang 已提交
97 98 99 100 101 102 103 104 105 106
    distributedData.createKVManager(kvManagerConfig).then((manager) => {
        console.log("createKVManager success");
        kvManager = manager;
    }).catch((err) => {
        console.log("createKVManager err: "  + JSON.stringify(err));
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
107

108
## KVManagerConfig
Z
zengyawen 已提交
109 110 111

提供KVManager实例的配置信息,包括调用方的包名和用户信息。

G
ge-yafang 已提交
112
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
113

114 115 116 117 118 119
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 调用方的包名。 |

## UserInfo
Z
zengyawen 已提交
120 121 122

用户信息。

G
ge-yafang 已提交
123
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
124

125 126 127 128 129 130 131
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userId | string | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
132

G
ge-yafang 已提交
133
用户类型枚举。
Z
zengyawen 已提交
134

G
ge-yafang 已提交
135
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
136

G
ge-yafang 已提交
137
| 名称 | 值 | 说明 |
138 139 140 141 142
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
143

G
ge-yafang 已提交
144
数据管理实例,用于获取KVStore的相关信息。在调用KVManager的方法前,需要先通过[createKVManager](#distributeddatacreatekvmanager)构建一个KVManager实例。
Z
zengyawen 已提交
145

146
### getKVStore
Z
zengyawen 已提交
147

148
getKVStore&lt;T extends KVStore&gt;(storeId: string, options: Options, callback: AsyncCallback&lt;T&gt;): void
Z
zengyawen 已提交
149

G
ge-yafang 已提交
150
通过指定Options和storeId,创建并获取KVStore数据库,使用callback异步回调。
Z
zengyawen 已提交
151

G
ge-yafang 已提交
152
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
153

G
ge-yafang 已提交
154
**参数:**
A
asfasdff 已提交
155

156 157 158 159
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| storeId | string | 是  | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options | [Options](#options) | 是  | 创建KVStore实例的配置信息。 |
G
ge-yafang 已提交
160
| callback | AsyncCallback&lt;T&gt;&lt;T extends [KVStore](#kvstore)&gt; | 是  | 回调函数。返回创建的KVStore数据库实例。 |
A
asfasdff 已提交
161

G
ge-yafang 已提交
162
**示例:**
A
asfasdff 已提交
163

G
ge-yafang 已提交
164
```js
G
ge-yafang 已提交
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
let kvStore;
let kvManager;
try {
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        securityLevel : distributedData.SecurityLevel.S2,
    };
    kvManager.getKVStore('storeId', options, function (err, store) {
        if (err) {
            console.log("getKVStore err: "  + JSON.stringify(err));
            return;
        }
        console.log("getKVStore success");
        kvStore = store;
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
188 189


190
### getKVStore
A
asfasdff 已提交
191

A
asfasdff 已提交
192
getKVStore&lt;T extends KVStore&gt;(storeId: string, options: Options): Promise&lt;T&gt;
Z
zengyawen 已提交
193

G
ge-yafang 已提交
194
通过指定Options和storeId,创建并获取KVStore数据库,使用Promise异步回调。
Z
zengyawen 已提交
195

G
ge-yafang 已提交
196
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
197

G
ge-yafang 已提交
198
**参数:**
A
asfasdff 已提交
199

200 201 202 203
| 参数名   | 参数类型                | 必填  | 说明    |
| ------- | ---------------------- | ---- | -------------------- |
| storeId  | string      | 是   | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options  | [Options](#options)   | 是   | 创建KVStore实例的配置信息。|
A
asfasdff 已提交
204 205


G
ge-yafang 已提交
206
**返回值:**
A
asfasdff 已提交
207

208 209
| 类型                                    | 说明        |
| -------------------------------------- | ------------------------ |
G
ge-yafang 已提交
210
| Promise&lt;T&gt;&lt;T extends [KVStore](#kvstore)&gt; | Promise对象。返回创建的KVStore数据库实例。 |
211

G
ge-yafang 已提交
212
**示例:**
213

G
ge-yafang 已提交
214
```js
G
ge-yafang 已提交
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
let kvStore;
let kvManager;
try {
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        securityLevel : distributedData.SecurityLevel.S2,
    };
    kvManager.getKVStore('storeId', options).then((store) => {
        console.log("getKVStore success");
        kvStore = store;
    }).catch((err) => {
        console.log("getKVStore err: "  + JSON.stringify(err));
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
236

A
asfasdff 已提交
237
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
238

239
closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
240

G
ge-yafang 已提交
241
通过storeId的值关闭指定的KVStore数据库,使用callback异步回调。
A
asfasdff 已提交
242

G
ge-yafang 已提交
243
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
244

G
ge-yafang 已提交
245
**参数:**
246 247 248 249 250 251


| 参数名   | 参数类型              | 必填 | 说明         |
| ------- | -----------------   | ---- | --------------------------- |
| appId    | string              | 是   | 所调用数据库方的包名。         |
| storeId  | string  | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
252
| kvStore  | [KVStore](#kvstore) | 是   | 要关闭的KVStore数据库。     |
G
ge-yafang 已提交
253
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。 |
A
asfasdff 已提交
254

G
ge-yafang 已提交
255
**示例:**
A
asfasdff 已提交
256

G
ge-yafang 已提交
257
```js
G
ge-yafang 已提交
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
let kvStore;
let kvManager;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
 }
 try {
    kvManager.getKVStore('storeId', options, async function (err, store) {
    console.log('getKVStore success');
    kvStore = store;
W
wangkai 已提交
273
    kvManager.closeKVStore('appId', 'storeId', kvStore, function (err, data) {
G
ge-yafang 已提交
274 275 276 277 278 279 280 281
        console.log('closeKVStore success');
    });
    });
} catch (e) {
    console.log('closeKVStore e ' + e);
}
```

A
asfasdff 已提交
282

A
asfasdff 已提交
283
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
284

285
closeKVStore(appId: string, storeId: string, kvStore: KVStore): Promise&lt;void&gt;
A
asfasdff 已提交
286

G
ge-yafang 已提交
287
通过storeId的值关闭指定的KVStore数据库,使用Promise异步回调。
A
asfasdff 已提交
288

G
ge-yafang 已提交
289
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
290

G
ge-yafang 已提交
291
**参数:**
A
asfasdff 已提交
292

293 294 295 296
| 参数名  | 参数类型 | 必填  | 说明        |
| -----  | ------  | ---- | ----------------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。            |
| storeId | string | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
297
| kvStore | [KVStore](#kvstore)  | 是   | 要关闭的KVStore数据库。        |
A
asfasdff 已提交
298

G
ge-yafang 已提交
299
**返回值:**
A
asfasdff 已提交
300

301 302
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
303
| Promise\<void> | 无返回结果的Promise对象。 |
A
asfasdff 已提交
304

G
ge-yafang 已提交
305
**示例:**
A
asfasdff 已提交
306

G
ge-yafang 已提交
307
```js
G
ge-yafang 已提交
308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
 try {
    kvManager.getKVStore('storeId', options).then(async (store) => {
    console.log('getKVStore success');
    kvStore = store;
W
wangkai 已提交
323
    kvManager.closeKVStore('appId', 'storeId', kvStore).then(() => {
G
ge-yafang 已提交
324 325 326 327 328 329 330 331 332 333 334
        console.log('closeKVStore success');
    }).catch((err) => {
        console.log('closeKVStore err ' + JSON.stringify(err));
    });
    }).catch((err) => {
        console.log('CloseKVStore getKVStore err ' + JSON.stringify(err));
    });
 } catch (e) {
    console.log('closeKVStore e ' + e);
}  
```
A
asfasdff 已提交
335 336


A
asfasdff 已提交
337
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
338

339
deleteKVStore(appId: string, storeId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
340

G
ge-yafang 已提交
341
通过storeId的值删除指定的KVStore数据库,使用callback异步回调。
A
asfasdff 已提交
342

G
ge-yafang 已提交
343
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
344

G
ge-yafang 已提交
345
**参数:**
A
asfasdff 已提交
346

347 348 349 350
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
351
| callback | AsyncCallback&lt;void&gt;  | 是   | 回调函数。 |
352

G
ge-yafang 已提交
353
**示例:**
A
asfasdff 已提交
354

G
ge-yafang 已提交
355
```js
G
ge-yafang 已提交
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
    kvManager.getKVStore('store', options, async function (err, store) {
        console.log('getKVStore success');
        kvStore = store;
W
wangkai 已提交
371
        kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
G
ge-yafang 已提交
372
            console.log('deleteKVStore success');
A
asfasdff 已提交
373
        });
G
ge-yafang 已提交
374 375 376 377 378
    });
} catch (e) {
    console.log('DeleteKVStore e ' + e);
}
```
A
asfasdff 已提交
379

A
asfasdff 已提交
380
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
381

382
deleteKVStore(appId: string, storeId: string): Promise&lt;void&gt;
A
asfasdff 已提交
383

G
ge-yafang 已提交
384
通过storeId的值删除指定的KVStore数据库,使用Promise异步回调。
A
asfasdff 已提交
385

G
ge-yafang 已提交
386
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
387

G
ge-yafang 已提交
388
**参数:**
Z
zengyawen 已提交
389

390 391 392 393
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
A
asfasdff 已提交
394 395


G
ge-yafang 已提交
396
**返回值:**
A
asfasdff 已提交
397

398 399
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
400
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
A
asfasdff 已提交
401

G
ge-yafang 已提交
402
**示例:**
A
asfasdff 已提交
403

G
ge-yafang 已提交
404
```js
G
ge-yafang 已提交
405 406 407 408 409 410 411 412 413 414 415 416
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
G
ge-yafang 已提交
417
    kvManager.getKVStore('storeId', options).then(async (store) => {
G
ge-yafang 已提交
418 419
        console.log('getKVStore success');
        kvStore = store;
W
wangkai 已提交
420
        kvManager.deleteKVStore('appId', 'storeId').then(() => {
G
ge-yafang 已提交
421
            console.log('deleteKVStore success');
A
asfasdff 已提交
422
        }).catch((err) => {
G
ge-yafang 已提交
423
            console.log('deleteKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
424
        });
G
ge-yafang 已提交
425 426 427 428 429 430 431
    }).catch((err) => {
        console.log('getKVStore err ' + JSON.stringify(err));
    });
} catch (e) {
    console.log('deleteKVStore e ' + e);
}
```
A
asfasdff 已提交
432 433


A
asfasdff 已提交
434
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
435

436
getAllKVStoreId(appId: string, callback: AsyncCallback&lt;string[]&gt;): void
A
asfasdff 已提交
437

G
ge-yafang 已提交
438
获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore8)方法删除的KVStore数据库的storeId,使用callback异步回调。
A
asfasdff 已提交
439

G
ge-yafang 已提交
440
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
441

G
ge-yafang 已提交
442
**参数:**
A
asfasdff 已提交
443

444 445 446
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
G
ge-yafang 已提交
447
| callback | AsyncCallback&lt;string[]&gt; | 是   |回调函数。返回所有创建的KvStore数据库的storeId。 |
A
asfasdff 已提交
448

G
ge-yafang 已提交
449
**示例:**
A
asfasdff 已提交
450

G
ge-yafang 已提交
451
```js
G
ge-yafang 已提交
452 453 454 455 456 457 458 459 460 461
let kvManager;
try {
    kvManager.getAllKVStoreId('appId', function (err, data) {
        console.log('GetAllKVStoreId success');
        console.log('GetAllKVStoreId size = ' + data.length);
    });
} catch (e) {
    console.log('GetAllKVStoreId e ' + e);
}
```
A
asfasdff 已提交
462 463


A
asfasdff 已提交
464
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
465

466
getAllKVStoreId(appId: string): Promise&lt;string[]&gt;
A
asfasdff 已提交
467

G
ge-yafang 已提交
468
获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore8)方法删除的KVStore数据库的storeId,使用Promise异步回调。
A
asfasdff 已提交
469

G
ge-yafang 已提交
470
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
471

G
ge-yafang 已提交
472
**参数:**
A
asfasdff 已提交
473

474 475 476
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
477 478


G
ge-yafang 已提交
479
**返回值:**
Z
zengyawen 已提交
480

481 482
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
483
| Promise&lt;string[]&gt;| Promise对象。返回所有创建的KvStore数据库的storeId。 |
A
asfasdff 已提交
484

G
ge-yafang 已提交
485
**示例:**
A
asfasdff 已提交
486

G
ge-yafang 已提交
487
```js
G
ge-yafang 已提交
488 489 490 491 492 493 494 495 496 497 498 499 500
let kvManager;
try {
    console.log('GetAllKVStoreId');
    kvManager.getAllKVStoreId('apppId').then((data) => {
        console.log('getAllKVStoreId success');
        console.log('size = ' + data.length);
    }).catch((err) => {
        console.log('getAllKVStoreId err ' + JSON.stringify(err));
    });
} catch(e) {
    console.log('getAllKVStoreId e ' + e);
}
```
A
asfasdff 已提交
501 502


G
ge-yafang 已提交
503
### on('distributedDataServiceDie')<sup>8+</sup> ###
A
asfasdff 已提交
504

505
on(event: 'distributedDataServiceDie', deathCallback: Callback&lt;void&gt;): void
A
asfasdff 已提交
506

G
ge-yafang 已提交
507
订阅服务状态变更通知。
A
asfasdff 已提交
508

G
ge-yafang 已提交
509
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
510

G
ge-yafang 已提交
511
**参数:**
A
asfasdff 已提交
512

513 514
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
515
| event  | string | 是    | 订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 |
G
ge-yafang 已提交
516
| deathCallback  | Callback&lt;void&gt;  | 是    | 回调函数。 |
517

G
ge-yafang 已提交
518
**示例:**
A
asfasdff 已提交
519

G
ge-yafang 已提交
520
```js
G
ge-yafang 已提交
521 522 523 524 525 526
let kvManager;
try {
    
    console.log('KVManagerOn');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
527
    }
G
ge-yafang 已提交
528 529 530 531 532
    kvManager.on('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
533 534


G
ge-yafang 已提交
535
### off('distributedDataServiceDie')<sup>8+</sup> ###
A
asfasdff 已提交
536

537
off(event: 'distributedDataServiceDie', deathCallback?: Callback&lt;void&gt;): void
A
asfasdff 已提交
538

G
ge-yafang 已提交
539
取消订阅服务状态变更通知。
A
asfasdff 已提交
540

G
ge-yafang 已提交
541
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
542

G
ge-yafang 已提交
543
**参数:**
A
asfasdff 已提交
544

545 546
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
547
| event  | string | 是    | 取消订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 |
G
ge-yafang 已提交
548
| deathCallback  | Callback&lt;void&gt;  | 否    | 回调函数。 |
Z
zengyawen 已提交
549

A
asfasdff 已提交
550

G
ge-yafang 已提交
551
**示例:**
A
asfasdff 已提交
552

G
ge-yafang 已提交
553
```js
G
ge-yafang 已提交
554 555 556 557 558
let kvManager;
try {
    console.log('KVManagerOff');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
559
    }
G
ge-yafang 已提交
560 561 562 563
    kvManager.off('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
564
    
G
ge-yafang 已提交
565
```
A
asfasdff 已提交
566

567
## Options
Z
zengyawen 已提交
568 569 570

用于提供创建数据库的配置信息。

G
ge-yafang 已提交
571
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
572

573 574 575 576 577
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。     |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。     |
G
ge-yafang 已提交
578
| autoSync  | boolean | 否 |设置数据库文件是否自动同步,默认不自动同步。<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC     |
579 580
| kvStoreType | [KVStoreType](#kvstoretype) | 否 |设置要创建的数据库类型,默认为多设备协同数据库。 |
| securityLevel | [SecurityLevel](#securitylevel) | 否 |设置数据库安全级别,默认不设置安全级别。  |
Z
zengyawen 已提交
581
| schema<sup>8+</sup> | [Schema](#schema8) | 否 | 设置定义存储在数据库中的值。 |
582 583 584


## KVStoreType
Z
zengyawen 已提交
585

G
ge-yafang 已提交
586
KVStore数据库类型枚举。
Z
zengyawen 已提交
587

588

G
ge-yafang 已提交
589
| 名称  | 值 | 说明                    |
590
| ---   | ----  | ----------------------- |
591 592 593
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
| MULTI_VERSION   | 2 | 表示多版本数据库。此类型当前不允许使用。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore |
594 595 596


## SecurityLevel
Z
zengyawen 已提交
597

G
ge-yafang 已提交
598
数据库的安全级别枚举。
Z
zengyawen 已提交
599

G
ge-yafang 已提交
600
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
601

G
ge-yafang 已提交
602
| 名称  | 值 | 说明                    |
603 604
| ---   | ----  | ----------------------- |
| NO_LEVEL  | 0 | 表示数据库不设置安全级别。   |
G
ge-yafang 已提交
605 606 607 608 609
| S0  | 1 | 表示数据库的安全级别为公共级别。 |
| S1  | 2 | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 |
| S2  | 3 | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 |
| S3  | 5 | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 |
| S4  | 6 | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 |
610 611 612


## Constants
Z
zengyawen 已提交
613 614 615

KVStore常量。

G
ge-yafang 已提交
616
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
617

G
ge-yafang 已提交
618
| 名称  | 值 | 说明                    |
619
| ---   | ----  | ----------------------- |
G
ge-yafang 已提交
620
| MAX_KEY_LENGTH  | 1024 | 数据库中Key允许的最大长度,单位字节。  |
621
| MAX_VALUE_LENGTH  | 4194303 | 数据库中Value允许的最大长度,单位字节。  |
G
ge-yafang 已提交
622
| MAX_KEY_LENGTH_DEVICE  | 896 | 最大设备密钥长度,单位字节。 |
623
| MAX_STORE_ID_LENGTH  | 128 | 数据库标识符允许的最大长度,单位字节。  |
G
ge-yafang 已提交
624 625
| MAX_QUERY_LENGTH  | 512000 | 最大查询长度,单位字节。 |
| MAX_BATCH_SIZE  | 128 | 最大批处理操作数量。 |
A
asfasdff 已提交
626

A
asfasdff 已提交
627
## Schema<sup>8+</sup> ##
A
asfasdff 已提交
628

G
ge-yafang 已提交
629
表示数据库模式,可以在创建或打开数据库时创建Schema对象并将它们放入[Options](#options)中。
A
asfasdff 已提交
630

G
ge-yafang 已提交
631
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
A
asfasdff 已提交
632

W
wufengshan 已提交
633
| 名称  | 类型 | 说明                    |
634
| ---   | ----  | ----------------------- |
G
ge-yafang 已提交
635
| root<sup>8+</sup>  | [FieldNode](#fieldnode8) | 表示json根对象。 |
G
ge-yafang 已提交
636
| indexes<sup>8+</sup>  | Array\<string> | 表示json类型的字符串数组。  |
W
wufengshan 已提交
637 638
| mode<sup>8+</sup>  | number | 表示Schema的模式。  |
| skip<sup>8+</sup>  | number |  Schema的跳跃大小。  |
639 640 641 642 643 644 645

### constructor<sup>8+</sup> ###

constructor()

用于创建Schema实例的构造函数。

G
ge-yafang 已提交
646
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
647

648
## FieldNode<sup>8+</sup> ##
A
asfasdff 已提交
649 650 651

表示 Schema 实例的节点,提供定义存储在数据库中的值的方法。

G
ge-yafang 已提交
652
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
653

W
wufengshan 已提交
654
| 名称  | 类型 | 说明                    |
655
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
656
| nullable<sup>8+</sup>  | boolean | 表示数据库字段是否可以为空。   |
Z
zengyawen 已提交
657
| default<sup>8+</sup>  | string | 表示Fieldnode的默认值。 |
G
ge-yafang 已提交
658
| type<sup>8+</sup>  | number | 表示指定节点对应数据类型的值。 |
659 660 661 662 663 664 665

### constructor<sup>8+</sup> ###

constructor(name: string)

用于创建带有string字段FieldNode实例的构造函数。

G
ge-yafang 已提交
666
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
667

G
ge-yafang 已提交
668
**参数:**
669

Z
zengyawen 已提交
670 671 672
| 参数名 | 参数类型 | 必填 | 说明            |
| ------ | -------- | ---- | --------------- |
| name   | string   | 是   | FieldNode的值。 |
673

A
asfasdff 已提交
674
### appendChild<sup>8+</sup> ###
A
asfasdff 已提交
675

676
appendChild(child: FieldNode): boolean
A
asfasdff 已提交
677

G
ge-yafang 已提交
678
在当前 FieldNode 中添加一个子节点。
A
asfasdff 已提交
679

G
ge-yafang 已提交
680
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
681

G
ge-yafang 已提交
682
**参数:**
A
asfasdff 已提交
683

684 685
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
686
| child  | [FieldNode](#fieldnode8) | 是    | 要附加的域节点。   |
Z
zengyawen 已提交
687

G
ge-yafang 已提交
688
**返回值:**
A
asfasdff 已提交
689

690 691
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
692
| boolean |返回true表示子节点成功添加到FieldNode;返回false则表示操作失败。 |
A
asfasdff 已提交
693

G
ge-yafang 已提交
694
**示例:**
A
asfasdff 已提交
695

G
ge-yafang 已提交
696
```js
G
ge-yafang 已提交
697 698 699 700 701 702 703 704 705
import ddm from '@ohos.data.distributedData';
try {
    let node = new ddm.FieldNode("root");
    let child1 = new ddm.FieldNode("child1");
    let child2 = new ddm.FieldNode("child2");
    let child3 = new ddm.FieldNode("child3");
    node.appendChild(child1);
    node.appendChild(child2);
    node.appendChild(child3);
W
wangkai 已提交
706
    console.log("appendNode " + JSON.stringify(node));
G
ge-yafang 已提交
707 708 709 710 711 712 713 714
    child1 = null;
    child2 = null;
    child3 = null;
    node = null;
} catch (e) {
    console.log("AppendChild " + e);
}
```
A
asfasdff 已提交
715 716


717
## KvStoreResultSet<sup>8+</sup> ##
A
asfasdff 已提交
718

G
ge-yafang 已提交
719 720 721
提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。

在调用KvStoreResultSet的方法前,需要先通过[getKVStore](#getkvstore)构建一个KVStore实例。
A
asfasdff 已提交
722

723

A
asfasdff 已提交
724
### getCount<sup>8+</sup> ###
A
asfasdff 已提交
725

726
getCount(): number
A
asfasdff 已提交
727

G
ge-yafang 已提交
728
获取结果集中的总行数。
A
asfasdff 已提交
729

G
ge-yafang 已提交
730
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
731

G
ge-yafang 已提交
732
**返回值:**
A
asfasdff 已提交
733

734 735
| 类型   | 说明               |
| ------ | --------------    |
G
ge-yafang 已提交
736
| number |返回数据的总行数。          |
A
asfasdff 已提交
737

G
ge-yafang 已提交
738
**示例:**
A
asfasdff 已提交
739

G
ge-yafang 已提交
740
```js
G
ge-yafang 已提交
741 742 743 744
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
745
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
746 747
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
748
        console.log('getResultSet failed:ed: ' + err);
G
ge-yafang 已提交
749 750
    });
    const count = resultSet.getCount();
G
ge-yafang 已提交
751
    console.log("getCount succeed:" + count);
G
ge-yafang 已提交
752
} catch (e) {
G
ge-yafang 已提交
753
    console.log("getCount failed: " + e);
G
ge-yafang 已提交
754 755
}
```
A
asfasdff 已提交
756

A
asfasdff 已提交
757
### getPosition<sup>8+</sup> ###
A
asfasdff 已提交
758

759
getPosition(): number
A
asfasdff 已提交
760 761 762

获取结果集中当前的读取位置。

G
ge-yafang 已提交
763
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
764

G
ge-yafang 已提交
765
**返回值:**
A
asfasdff 已提交
766

767 768 769
| 类型   | 说明               |
| ------ | --------------    |
| number |返回当前读取位置。   |
A
asfasdff 已提交
770

G
ge-yafang 已提交
771
**示例:**
A
asfasdff 已提交
772

G
ge-yafang 已提交
773
```js
G
ge-yafang 已提交
774 775 776 777
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
778
        console.log('getResultSet succeeed.');
G
ge-yafang 已提交
779 780
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
781
        console.log('getResultSet failed:ed: ' + err);
G
ge-yafang 已提交
782 783
    });
    const position = resultSet.getPosition();
G
ge-yafang 已提交
784
    console.log("getPosition succeed:" + position);
G
ge-yafang 已提交
785
} catch (e) {
G
ge-yafang 已提交
786
    console.log("getPosition failed: " + e);
G
ge-yafang 已提交
787 788
}
```
A
asfasdff 已提交
789 790


A
asfasdff 已提交
791
### moveToFirst<sup>8+</sup> ###
A
asfasdff 已提交
792

793
moveToFirst(): boolean
A
asfasdff 已提交
794

G
ge-yafang 已提交
795
将读取位置移动到第一行。如果结果集为空,则返回false。
A
asfasdff 已提交
796

G
ge-yafang 已提交
797
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
798

G
ge-yafang 已提交
799
**返回值:**
A
asfasdff 已提交
800

801 802
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
803
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
804

G
ge-yafang 已提交
805
**示例:**
A
asfasdff 已提交
806

G
ge-yafang 已提交
807
```js
G
ge-yafang 已提交
808 809 810 811
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
812
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
813 814
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
815
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
816
    });
G
ge-yafang 已提交
817 818
    const moved1 = resultSet.moveToFirst();
    console.log("moveToFirst succeed: " + moved1);
G
ge-yafang 已提交
819
} catch (e) {
G
ge-yafang 已提交
820
    console.log("moveToFirst failed " + e);
G
ge-yafang 已提交
821 822
}
```
A
asfasdff 已提交
823 824


A
asfasdff 已提交
825
### moveToLast<sup>8+</sup> ###
A
asfasdff 已提交
826

827
moveToLast(): boolean
A
asfasdff 已提交
828

G
ge-yafang 已提交
829
将读取位置移动到最后一行。如果结果集为空,则返回false。
A
asfasdff 已提交
830

G
ge-yafang 已提交
831
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
832

G
ge-yafang 已提交
833
**返回值:**
A
asfasdff 已提交
834

835 836
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
837
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
838

G
ge-yafang 已提交
839
**示例:**
A
asfasdff 已提交
840

G
ge-yafang 已提交
841
```js
G
ge-yafang 已提交
842 843 844 845
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
846
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
847 848
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
849
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
850
    });
G
ge-yafang 已提交
851 852
    const moved2 = resultSet.moveToLast();
    console.log("moveToLast succeed:" + moved2);
G
ge-yafang 已提交
853
} catch (e) {
G
ge-yafang 已提交
854
    console.log("moveToLast failed: " + e);
G
ge-yafang 已提交
855 856
}
```
A
asfasdff 已提交
857 858


A
asfasdff 已提交
859
### moveToNext<sup>8+</sup> ###
A
asfasdff 已提交
860

861
moveToNext(): boolean
A
asfasdff 已提交
862

G
ge-yafang 已提交
863
将读取位置移动到下一行。如果结果集为空,则返回false。
A
asfasdff 已提交
864

G
ge-yafang 已提交
865
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
866

G
ge-yafang 已提交
867
**返回值:**
A
asfasdff 已提交
868

869 870
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
871
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
872

G
ge-yafang 已提交
873
**示例:**
A
asfasdff 已提交
874

G
ge-yafang 已提交
875
```js
G
ge-yafang 已提交
876 877 878 879
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
880
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
881 882
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
883
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
884
    });
G
ge-yafang 已提交
885 886
    const moved3 = resultSet.moveToNext();
    console.log("moveToNext succeed: " + moved3);
G
ge-yafang 已提交
887
} catch (e) {
G
ge-yafang 已提交
888
    console.log("moveToNext failed: " + e);
G
ge-yafang 已提交
889 890
}
```
A
asfasdff 已提交
891 892


A
asfasdff 已提交
893
### moveToPrevious<sup>8+</sup> ###
A
asfasdff 已提交
894

895
moveToPrevious(): boolean
A
asfasdff 已提交
896

G
ge-yafang 已提交
897
将读取位置移动到上一行。如果结果集为空,则返回false。
A
asfasdff 已提交
898

G
ge-yafang 已提交
899
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
900

G
ge-yafang 已提交
901
**返回值:**
A
asfasdff 已提交
902

903 904
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
905
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
906

G
ge-yafang 已提交
907
**示例:**
A
asfasdff 已提交
908

G
ge-yafang 已提交
909
```js
G
ge-yafang 已提交
910 911 912 913
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
914
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
915 916
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
917
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
918
    });
G
ge-yafang 已提交
919 920
    const moved4 = resultSet.moveToPrevious();
    console.log("moveToPrevious succeed:" + moved4);
G
ge-yafang 已提交
921
} catch (e) {
G
ge-yafang 已提交
922
    console.log("moveToPrevious failed: " + e);
G
ge-yafang 已提交
923 924
}
```
A
asfasdff 已提交
925 926


A
asfasdff 已提交
927
### move<sup>8+</sup> ###
A
asfasdff 已提交
928

929
move(offset: number): boolean
A
asfasdff 已提交
930 931 932

将读取位置移动到当前位置的相对偏移量。

G
ge-yafang 已提交
933
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
934

G
ge-yafang 已提交
935
**参数:**
A
asfasdff 已提交
936

937 938 939
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| offset  | number  | 是    | 表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。   |
A
asfasdff 已提交
940

G
ge-yafang 已提交
941
**返回值:**
A
asfasdff 已提交
942

943 944
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
945
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
946

G
ge-yafang 已提交
947
**示例:**
A
asfasdff 已提交
948

G
ge-yafang 已提交
949
```js
G
ge-yafang 已提交
950 951 952 953
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
954
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
955 956
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
957
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
958
    });
G
ge-yafang 已提交
959 960
    const moved5 = resultSet.move();
    console.log("move succeed:" + moved5);
G
ge-yafang 已提交
961
} catch (e) {
G
ge-yafang 已提交
962
    console.log("move failed: " + e);
G
ge-yafang 已提交
963 964
}
```
A
asfasdff 已提交
965 966


A
asfasdff 已提交
967
### moveToPosition<sup>8+</sup> ###
A
asfasdff 已提交
968

969
moveToPosition(position: number): boolean
A
asfasdff 已提交
970 971 972

将读取位置从 0 移动到绝对位置。

G
ge-yafang 已提交
973
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
974

G
ge-yafang 已提交
975
**参数:**
A
asfasdff 已提交
976

977 978 979
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| position  | number  | 是    |表示绝对位置。          |
A
asfasdff 已提交
980

G
ge-yafang 已提交
981
**返回值:**
A
asfasdff 已提交
982

983 984
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
985
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
986

G
ge-yafang 已提交
987
**示例:**
A
asfasdff 已提交
988

G
ge-yafang 已提交
989
```js
G
ge-yafang 已提交
990 991 992 993
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
994
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
995 996
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
997
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
998
    });
G
ge-yafang 已提交
999 1000
    const moved6 = resultSet.moveToPosition();
    console.log("moveToPosition succeed: " + moved6);
G
ge-yafang 已提交
1001
} catch (e) {
G
ge-yafang 已提交
1002
    console.log("moveToPosition failed: " + e);
G
ge-yafang 已提交
1003 1004
}
```
A
asfasdff 已提交
1005 1006


A
asfasdff 已提交
1007
### isFirst<sup>8+</sup> ###
A
asfasdff 已提交
1008

1009
isFirst(): boolean
A
asfasdff 已提交
1010 1011 1012

检查读取位置是否为第一行。

G
ge-yafang 已提交
1013
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1014

G
ge-yafang 已提交
1015
**返回值:**
A
asfasdff 已提交
1016

1017 1018
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1019
| boolean |返回true表示读取位置为第一行;返回false表示读取位置不是第一行。   |
A
asfasdff 已提交
1020

G
ge-yafang 已提交
1021
**示例:**
A
asfasdff 已提交
1022

G
ge-yafang 已提交
1023
```js
G
ge-yafang 已提交
1024 1025 1026 1027
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1028
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1029 1030
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1031
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1032
    });
G
ge-yafang 已提交
1033 1034
    const isfirst = resultSet.isFirst();
    console.log("Check isFirst succeed:" + isfirst);
G
ge-yafang 已提交
1035
} catch (e) {
G
ge-yafang 已提交
1036
    console.log("Check isFirst failed: " + e);
G
ge-yafang 已提交
1037 1038
}
```
A
asfasdff 已提交
1039 1040


A
asfasdff 已提交
1041
### isLast<sup>8+</sup> ###
A
asfasdff 已提交
1042

1043
isLast(): boolean
A
asfasdff 已提交
1044 1045 1046

检查读取位置是否为最后一行。

G
ge-yafang 已提交
1047
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1048

G
ge-yafang 已提交
1049
**返回值:**
A
asfasdff 已提交
1050

1051 1052
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1053
| boolean |返回true表示读取位置为最后一行;返回false表示读取位置不是最后一行。   |
A
asfasdff 已提交
1054

G
ge-yafang 已提交
1055
**示例:**
A
asfasdff 已提交
1056

G
ge-yafang 已提交
1057
```js
G
ge-yafang 已提交
1058 1059 1060 1061
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1062
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1063 1064
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1065
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1066
    });
G
ge-yafang 已提交
1067 1068
    const islast = resultSet.isLast();
    console.log("Check isLast succeed: " + islast);
G
ge-yafang 已提交
1069
} catch (e) {
G
ge-yafang 已提交
1070
    console.log("Check isLast failed: " + e);
G
ge-yafang 已提交
1071 1072
}
```
A
asfasdff 已提交
1073

A
asfasdff 已提交
1074
### isBeforeFirst<sup>8+</sup> ###
A
asfasdff 已提交
1075

1076
isBeforeFirst(): boolean
A
asfasdff 已提交
1077 1078 1079

检查读取位置是否在第一行之前。

G
ge-yafang 已提交
1080
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1081

G
ge-yafang 已提交
1082
**返回值:**
A
asfasdff 已提交
1083

1084 1085
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1086
| boolean |返回true表示读取位置在第一行之前;返回false表示读取位置不在第一行之前。  |
A
asfasdff 已提交
1087

G
ge-yafang 已提交
1088
**示例:**
A
asfasdff 已提交
1089

G
ge-yafang 已提交
1090
```js
G
ge-yafang 已提交
1091 1092 1093 1094
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1095
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1096 1097
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1098
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1099
    });
G
ge-yafang 已提交
1100 1101
    const isbeforefirst = resultSet.isBeforeFirst();
    console.log("Check isBeforeFirst succeed: " + isbeforefirst);
G
ge-yafang 已提交
1102
} catch (e) {
G
ge-yafang 已提交
1103
    console.log("Check isBeforeFirst failed: " + e);
G
ge-yafang 已提交
1104 1105
}
```
A
asfasdff 已提交
1106 1107


A
asfasdff 已提交
1108
### isAfterLast<sup>8+</sup> ###
A
asfasdff 已提交
1109

1110
isAfterLast(): boolean
A
asfasdff 已提交
1111 1112 1113

检查读取位置是否在最后一行之后。

G
ge-yafang 已提交
1114
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1115

G
ge-yafang 已提交
1116
**返回值:**
A
asfasdff 已提交
1117

1118 1119
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1120
| boolean |返回true表示读取位置在最后一行之后;返回false表示读取位置不在最后一行之后。  |
A
asfasdff 已提交
1121

G
ge-yafang 已提交
1122
**示例:**
A
asfasdff 已提交
1123

G
ge-yafang 已提交
1124
```js
G
ge-yafang 已提交
1125 1126 1127 1128
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1129
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1130 1131
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1132
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1133
    });
G
ge-yafang 已提交
1134 1135
    const isafterlast = resultSet.isAfterLast();
    console.log("Check isAfterLast succeed:" + isafterlast);
G
ge-yafang 已提交
1136
} catch (e) {
G
ge-yafang 已提交
1137
    console.log("Check isAfterLast failed: " + e);
G
ge-yafang 已提交
1138 1139
}
```
A
asfasdff 已提交
1140 1141


A
asfasdff 已提交
1142
### getEntry<sup>8+</sup> ###
A
asfasdff 已提交
1143

1144
getEntry(): Entry
A
asfasdff 已提交
1145

G
ge-yafang 已提交
1146
从当前位置获取对应的键值对。
A
asfasdff 已提交
1147

G
ge-yafang 已提交
1148
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1149

G
ge-yafang 已提交
1150
**返回值:**
A
asfasdff 已提交
1151

1152 1153
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1154
| [Entry](#entry) |返回键值对。|
A
asfasdff 已提交
1155

G
ge-yafang 已提交
1156
**示例:**
A
asfasdff 已提交
1157

G
ge-yafang 已提交
1158
```js
G
ge-yafang 已提交
1159 1160 1161 1162
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1163
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1164 1165
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1166
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1167 1168
    });
    const entry  = resultSet.getEntry();
G
ge-yafang 已提交
1169
    console.log("getEntry succeed:" + JSON.stringify(entry));
G
ge-yafang 已提交
1170
} catch (e) {
G
ge-yafang 已提交
1171
    console.log("getEntry failed: " + e);
G
ge-yafang 已提交
1172 1173
}
```
A
asfasdff 已提交
1174 1175


1176
## Query<sup>8+</sup> ##
A
asfasdff 已提交
1177 1178 1179

使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。

G
ge-yafang 已提交
1180
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1181

1182 1183 1184 1185
### constructor<sup>8+</sup> ###

constructor() 

G
ge-yafang 已提交
1186
用于创建Schema实例的构造函数。
1187

G
ge-yafang 已提交
1188
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1189

1190

A
asfasdff 已提交
1191
### reset<sup>8+</sup> ###
A
asfasdff 已提交
1192

1193
reset(): Query
A
asfasdff 已提交
1194

G
ge-yafang 已提交
1195
重置Query对象。
A
asfasdff 已提交
1196

G
ge-yafang 已提交
1197
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1198 1199


G
ge-yafang 已提交
1200
**返回值:**
A
asfasdff 已提交
1201

1202 1203
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1204
| [Query](#query8) |返回重置的Query对象。|
A
asfasdff 已提交
1205

G
ge-yafang 已提交
1206
**示例:**
A
asfasdff 已提交
1207

G
ge-yafang 已提交
1208
```js
G
ge-yafang 已提交
1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219
try {
    let query = new distributedData.Query();
    query.equalTo("key", "value");
    console.log("query is " + query.getSqlLike());
    query.reset();
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("simply calls should be ok :" + e);
}
```
A
asfasdff 已提交
1220 1221


A
asfasdff 已提交
1222
### equalTo<sup>8+</sup> ###
A
asfasdff 已提交
1223

G
ge-yafang 已提交
1224
equalTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1225 1226 1227

构造一个Query对象来查询具有指定字段的条目,其值等于指定的值。

G
ge-yafang 已提交
1228
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1229

G
ge-yafang 已提交
1230
**参数:**
A
asfasdff 已提交
1231

G
ge-yafang 已提交
1232
| 参数名  | 参数类型 | 必填  | 说明                    |
1233
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1234
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1235
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1236

G
ge-yafang 已提交
1237
**返回值:**
A
asfasdff 已提交
1238

1239 1240
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1241
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1242

G
ge-yafang 已提交
1243
**示例:**
A
asfasdff 已提交
1244

G
ge-yafang 已提交
1245
```js
G
ge-yafang 已提交
1246 1247 1248 1249 1250 1251 1252 1253 1254
try {
    let query = new distributedData.Query();
    query.equalTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1255 1256


A
asfasdff 已提交
1257
### notEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1258

1259
notEqualTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1260 1261 1262

构造一个Query对象以查询具有指定字段且值不等于指定值的条目。

G
ge-yafang 已提交
1263
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1264

G
ge-yafang 已提交
1265
**参数:**
A
asfasdff 已提交
1266

1267 1268
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1269
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1270
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1271

G
ge-yafang 已提交
1272
**返回值:**
A
asfasdff 已提交
1273

1274 1275
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1276
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1277

G
ge-yafang 已提交
1278
**示例:**
A
asfasdff 已提交
1279

G
ge-yafang 已提交
1280
```js
G
ge-yafang 已提交
1281 1282 1283 1284 1285 1286 1287 1288 1289
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1290 1291


A
asfasdff 已提交
1292
### greaterThan<sup>8+</sup> ###
A
asfasdff 已提交
1293

1294
greaterThan(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1295 1296 1297

构造一个Query对象以查询具有大于指定值的指定字段的条目。

G
ge-yafang 已提交
1298
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1299

G
ge-yafang 已提交
1300
**参数:**
A
asfasdff 已提交
1301

1302 1303
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1304
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1305
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1306

G
ge-yafang 已提交
1307
**返回值:**
A
asfasdff 已提交
1308

1309 1310
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1311
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1312

G
ge-yafang 已提交
1313
**示例:**
A
asfasdff 已提交
1314

G
ge-yafang 已提交
1315
```js
G
ge-yafang 已提交
1316 1317 1318 1319 1320 1321 1322 1323 1324
try {
    let query = new distributedData.Query();
    query.greaterThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1325 1326


A
asfasdff 已提交
1327
### lessThan<sup>8+</sup> ###
A
asfasdff 已提交
1328

1329
lessThan(field: string, value: number|string): Query
A
asfasdff 已提交
1330 1331 1332

构造一个Query对象以查询具有小于指定值的指定字段的条目。

G
ge-yafang 已提交
1333
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1334

G
ge-yafang 已提交
1335
**参数:**
A
asfasdff 已提交
1336

1337 1338
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1339
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1340
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1341

G
ge-yafang 已提交
1342
**返回值:**
A
asfasdff 已提交
1343

1344 1345
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1346
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1347

G
ge-yafang 已提交
1348
**示例:**
A
asfasdff 已提交
1349

G
ge-yafang 已提交
1350
```js
G
ge-yafang 已提交
1351 1352 1353 1354 1355 1356 1357 1358 1359
try {
    let query = new distributedData.Query();
    query.lessThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1360 1361


A
asfasdff 已提交
1362
### greaterThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1363

1364
greaterThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1365 1366 1367

构造一个Query对象以查询具有指定字段且值大于或等于指定值的条目。

G
ge-yafang 已提交
1368
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1369

G
ge-yafang 已提交
1370
**参数:**
A
asfasdff 已提交
1371

1372 1373
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1374
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1375
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1376

G
ge-yafang 已提交
1377
**返回值:**
A
asfasdff 已提交
1378

1379 1380
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1381
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1382

G
ge-yafang 已提交
1383
**示例:**
A
asfasdff 已提交
1384

G
ge-yafang 已提交
1385
```js
G
ge-yafang 已提交
1386 1387 1388 1389 1390 1391 1392 1393 1394
try {
    let query = new distributedData.Query();
    query.greaterThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1395 1396


A
asfasdff 已提交
1397
### lessThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1398

1399
lessThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1400 1401 1402

构造一个Query对象以查询具有指定字段且值小于或等于指定值的条目。

G
ge-yafang 已提交
1403
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1404

G
ge-yafang 已提交
1405
**参数:**
A
asfasdff 已提交
1406

1407 1408
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1409
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1410
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1411

G
ge-yafang 已提交
1412
**返回值:**
A
asfasdff 已提交
1413

1414 1415
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1416
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1417

G
ge-yafang 已提交
1418
**示例:**
A
asfasdff 已提交
1419

G
ge-yafang 已提交
1420
```js
G
ge-yafang 已提交
1421 1422 1423 1424 1425 1426 1427 1428 1429
try {
    let query = new distributedData.Query();
    query.lessThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1430 1431


A
asfasdff 已提交
1432
### isNull<sup>8+</sup> ###
A
asfasdff 已提交
1433

1434
isNull(field: string): Query
A
asfasdff 已提交
1435 1436 1437

构造一个Query对象以查询具有值为null的指定字段的条目。

G
ge-yafang 已提交
1438
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1439

G
ge-yafang 已提交
1440
**参数:**
A
asfasdff 已提交
1441

1442 1443
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1444
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1445

G
ge-yafang 已提交
1446
**返回值:**
A
asfasdff 已提交
1447

1448 1449
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1450
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1451

G
ge-yafang 已提交
1452
**示例:**
A
asfasdff 已提交
1453

G
ge-yafang 已提交
1454
```js
G
ge-yafang 已提交
1455 1456 1457 1458 1459 1460 1461 1462 1463
try {
    let query = new distributedData.Query();
    query.isNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1464 1465


A
asfasdff 已提交
1466
### inNumber<sup>8+</sup> ###
A
asfasdff 已提交
1467

1468
inNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1469 1470 1471

构造一个Query对象以查询具有指定字段的条目,其值在指定的值列表中。

1472

G
ge-yafang 已提交
1473
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1474

G
ge-yafang 已提交
1475
**参数:**
A
asfasdff 已提交
1476

1477 1478
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1479
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1480
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1481

G
ge-yafang 已提交
1482
**返回值:**
A
asfasdff 已提交
1483

1484 1485
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1486
| [Query](#query8) |返回Query对象。|
1487

G
ge-yafang 已提交
1488
**示例:**
A
asfasdff 已提交
1489

G
ge-yafang 已提交
1490
```js
G
ge-yafang 已提交
1491 1492 1493 1494 1495 1496 1497 1498 1499
try {
    let query = new distributedData.Query();
    query.inNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1500 1501


A
asfasdff 已提交
1502
### inString<sup>8+</sup> ###
A
asfasdff 已提交
1503

1504
inString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1505 1506 1507

构造一个Query对象以查询具有指定字段的条目,其值在指定的字符串值列表中。

G
ge-yafang 已提交
1508
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1509

G
ge-yafang 已提交
1510
**参数:**
A
asfasdff 已提交
1511

1512 1513
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1514
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1515
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1516

G
ge-yafang 已提交
1517
**返回值:**
A
asfasdff 已提交
1518

1519 1520
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1521
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1522

G
ge-yafang 已提交
1523
**示例:**
A
asfasdff 已提交
1524

G
ge-yafang 已提交
1525
```js
G
ge-yafang 已提交
1526 1527 1528 1529 1530 1531 1532 1533 1534
try {
    let query = new distributedData.Query();
    query.inString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1535 1536


A
asfasdff 已提交
1537
### notInNumber<sup>8+</sup> ###
A
asfasdff 已提交
1538

1539
notInNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1540 1541 1542

构造一个Query对象以查询具有指定字段的条目,该字段的值不在指定的值列表中。

G
ge-yafang 已提交
1543
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1544

G
ge-yafang 已提交
1545
**参数:**
A
asfasdff 已提交
1546

1547 1548
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1549
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1550
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1551

G
ge-yafang 已提交
1552
**返回值:**
A
asfasdff 已提交
1553

1554 1555
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1556
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1557

G
ge-yafang 已提交
1558
**示例:**
A
asfasdff 已提交
1559

G
ge-yafang 已提交
1560
```js
G
ge-yafang 已提交
1561 1562 1563 1564 1565 1566 1567 1568 1569
try {
    let query = new distributedData.Query();
    query.notInNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1570 1571


A
asfasdff 已提交
1572
### notInString<sup>8+</sup> ###
A
asfasdff 已提交
1573

1574
notInString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1575 1576 1577

构造一个Query对象以查询具有指定字段且值不在指定字符串值列表中的条目。

G
ge-yafang 已提交
1578
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1579

G
ge-yafang 已提交
1580
**参数:**
A
asfasdff 已提交
1581

1582 1583
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1584
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1585
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1586

G
ge-yafang 已提交
1587
**返回值:**
A
asfasdff 已提交
1588

1589 1590
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1591
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1592

G
ge-yafang 已提交
1593
**示例:**
A
asfasdff 已提交
1594

G
ge-yafang 已提交
1595
```js
G
ge-yafang 已提交
1596 1597 1598 1599 1600 1601 1602 1603 1604
try {
    let query = new distributedData.Query();
    query.notInString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1605 1606


A
asfasdff 已提交
1607
### like<sup>8+</sup> ###
A
asfasdff 已提交
1608

1609
like(field: string, value: string): Query
A
asfasdff 已提交
1610 1611 1612

构造一个Query对象以查询具有与指定字符串值相似的指定字段的条目。

G
ge-yafang 已提交
1613
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1614

G
ge-yafang 已提交
1615
**参数:**
A
asfasdff 已提交
1616

1617 1618
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1619
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1620
| value  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1621

G
ge-yafang 已提交
1622
**返回值:**
A
asfasdff 已提交
1623

1624 1625
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1626
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1627

G
ge-yafang 已提交
1628
**示例:**
A
asfasdff 已提交
1629

G
ge-yafang 已提交
1630
```js
G
ge-yafang 已提交
1631 1632 1633 1634 1635 1636 1637 1638 1639
try {
    let query = new distributedData.Query();
    query.like("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1640 1641


A
asfasdff 已提交
1642
### unlike<sup>8+</sup> ###
A
asfasdff 已提交
1643

1644
unlike(field: string, value: string): Query
A
asfasdff 已提交
1645 1646 1647

构造一个Query对象以查询具有与指定字符串值不相似的指定字段的条目。

G
ge-yafang 已提交
1648
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1649

G
ge-yafang 已提交
1650
**参数:**
A
asfasdff 已提交
1651

1652 1653
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1654
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1655
| value  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1656

G
ge-yafang 已提交
1657
**返回值:**
A
asfasdff 已提交
1658

1659 1660
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1661
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1662

G
ge-yafang 已提交
1663
**示例:**
A
asfasdff 已提交
1664

G
ge-yafang 已提交
1665
```js
G
ge-yafang 已提交
1666 1667 1668 1669 1670 1671 1672 1673 1674
try {
    let query = new distributedData.Query();
    query.unlike("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1675 1676


A
asfasdff 已提交
1677
### and<sup>8+</sup> ###
A
asfasdff 已提交
1678

1679
and(): Query
A
asfasdff 已提交
1680 1681 1682

构造一个带有与条件的查询对象。

G
ge-yafang 已提交
1683
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1684

G
ge-yafang 已提交
1685
**返回值:**
A
asfasdff 已提交
1686

1687 1688
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1689
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1690

G
ge-yafang 已提交
1691
**示例:**
A
asfasdff 已提交
1692

G
ge-yafang 已提交
1693
```js
G
ge-yafang 已提交
1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value1");
    query.and();
    query.notEqualTo("field", "value2");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1705 1706


A
asfasdff 已提交
1707
### or<sup>8+</sup> ###
A
asfasdff 已提交
1708

1709
or(): Query
A
asfasdff 已提交
1710 1711 1712

构造一个带有或条件的Query对象。

G
ge-yafang 已提交
1713
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1714

G
ge-yafang 已提交
1715
**返回值:**
A
asfasdff 已提交
1716

1717 1718
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1719
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1720

G
ge-yafang 已提交
1721
**示例:**
A
asfasdff 已提交
1722

G
ge-yafang 已提交
1723
```js
G
ge-yafang 已提交
1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value1");
    query.or();
    query.notEqualTo("field", "value2");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1735 1736


A
asfasdff 已提交
1737
### orderByAsc<sup>8+</sup> ###
A
asfasdff 已提交
1738

1739
orderByAsc(field: string): Query
A
asfasdff 已提交
1740 1741 1742

构造一个Query对象,将查询结果按升序排序。

G
ge-yafang 已提交
1743
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1744

G
ge-yafang 已提交
1745
**参数:**
A
asfasdff 已提交
1746

1747 1748
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1749
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1750

G
ge-yafang 已提交
1751
**返回值:**
A
asfasdff 已提交
1752

1753 1754
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1755
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1756

G
ge-yafang 已提交
1757
**示例:**
A
asfasdff 已提交
1758

G
ge-yafang 已提交
1759
```js
G
ge-yafang 已提交
1760 1761 1762 1763 1764 1765 1766 1767 1768 1769
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    query.orderByAsc("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1770 1771


A
asfasdff 已提交
1772
### orderByDesc<sup>8+</sup> ###
A
asfasdff 已提交
1773

1774
orderByDesc(field: string): Query
A
asfasdff 已提交
1775 1776 1777

构造一个Query对象,将查询结果按降序排序。

G
ge-yafang 已提交
1778
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1779

G
ge-yafang 已提交
1780
**参数:**
A
asfasdff 已提交
1781

1782 1783
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1784
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1785

G
ge-yafang 已提交
1786
**返回值:**
A
asfasdff 已提交
1787

1788 1789
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1790
| [Query](#query8) |返回Query对象。|
1791

G
ge-yafang 已提交
1792
**示例:**
A
asfasdff 已提交
1793

G
ge-yafang 已提交
1794
```js
G
ge-yafang 已提交
1795 1796 1797 1798 1799 1800 1801 1802 1803 1804
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    query.orderByDesc("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1805 1806


A
asfasdff 已提交
1807
### limit<sup>8+</sup> ###
A
asfasdff 已提交
1808

1809
limit(total: number, offset: number): Query
A
asfasdff 已提交
1810 1811 1812

构造一个Query对象来指定结果的数量和开始位置。

G
ge-yafang 已提交
1813
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1814

G
ge-yafang 已提交
1815
**参数:**
A
asfasdff 已提交
1816

1817 1818 1819 1820
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| total  | number  | 是    |表示指定的结果数。  |
| offset | number  | 是    |表示起始位置。  |
A
asfasdff 已提交
1821

G
ge-yafang 已提交
1822
**返回值:**
A
asfasdff 已提交
1823

1824 1825
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1826
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1827

G
ge-yafang 已提交
1828
**示例:**
A
asfasdff 已提交
1829

G
ge-yafang 已提交
1830
```js
G
ge-yafang 已提交
1831 1832 1833 1834 1835 1836 1837 1838 1839 1840
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    query.limit("total", "offset");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1841 1842


A
asfasdff 已提交
1843
### isNotNull<sup>8+</sup> ###
A
asfasdff 已提交
1844

1845
isNotNull(field: string): Query
A
asfasdff 已提交
1846

G
ge-yafang 已提交
1847
构造一个Query对象以查询具有值不为null的指定字段的条目。
A
asfasdff 已提交
1848

G
ge-yafang 已提交
1849
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1850

G
ge-yafang 已提交
1851
**参数:**
A
asfasdff 已提交
1852

1853 1854
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1855
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。      |
A
asfasdff 已提交
1856

G
ge-yafang 已提交
1857
**返回值:**
A
asfasdff 已提交
1858

1859 1860
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1861
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1862

G
ge-yafang 已提交
1863
**示例:**
A
asfasdff 已提交
1864

G
ge-yafang 已提交
1865
```js
G
ge-yafang 已提交
1866 1867 1868 1869 1870 1871 1872 1873 1874
try {
    let query = new distributedData.Query();
    query.isNotNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1875 1876


A
asfasdff 已提交
1877
### beginGroup<sup>8+</sup> ###
A
asfasdff 已提交
1878

1879
beginGroup(): Query
A
asfasdff 已提交
1880 1881 1882

创建一个带有左括号的查询条件组。

G
ge-yafang 已提交
1883
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1884

G
ge-yafang 已提交
1885
**返回值:**
A
asfasdff 已提交
1886

1887 1888
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1889
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1890

G
ge-yafang 已提交
1891
**示例:**
A
asfasdff 已提交
1892

G
ge-yafang 已提交
1893
```js
G
ge-yafang 已提交
1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904
try {
    let query = new distributedData.Query();
    query.beginGroup();
    query.isNotNull("field");
    query.endGroup();
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1905 1906


A
asfasdff 已提交
1907
### endGroup<sup>8+</sup> ###
A
asfasdff 已提交
1908

1909
endGroup(): Query
A
asfasdff 已提交
1910 1911 1912

创建一个带有右括号的查询条件组。

G
ge-yafang 已提交
1913
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1914

G
ge-yafang 已提交
1915
**返回值:**
A
asfasdff 已提交
1916

1917 1918
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1919
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1920

G
ge-yafang 已提交
1921
**示例:**
A
asfasdff 已提交
1922

G
ge-yafang 已提交
1923
```js
G
ge-yafang 已提交
1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934
try {
    let query = new distributedData.Query();
    query.beginGroup();
    query.isNotNull("field");
    query.endGroup();
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1935 1936


A
asfasdff 已提交
1937
### prefixKey<sup>8+</sup> ###
A
asfasdff 已提交
1938

1939
prefixKey(prefix: string): Query
A
asfasdff 已提交
1940 1941 1942

创建具有指定键前缀的查询条件。

G
ge-yafang 已提交
1943
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1944

G
ge-yafang 已提交
1945
**参数:**
A
asfasdff 已提交
1946

1947 1948 1949
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
1950

G
ge-yafang 已提交
1951
**返回值:**
A
asfasdff 已提交
1952

1953 1954
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1955
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1956

G
ge-yafang 已提交
1957
**示例:**
A
asfasdff 已提交
1958

G
ge-yafang 已提交
1959
```js
G
ge-yafang 已提交
1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
try {
    let query = new distributedData.Query();
    query.prefixKey("$.name");
    query.prefixKey("0");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1970 1971


A
asfasdff 已提交
1972
### setSuggestIndex<sup>8+</sup> ###
A
asfasdff 已提交
1973

1974
setSuggestIndex(index: string): Query
A
asfasdff 已提交
1975 1976 1977

设置一个指定的索引,将优先用于查询。

G
ge-yafang 已提交
1978
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1979

G
ge-yafang 已提交
1980
**参数:**
A
asfasdff 已提交
1981

1982 1983 1984
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
1985

G
ge-yafang 已提交
1986
**返回值:**
A
asfasdff 已提交
1987

1988 1989
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1990
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1991

G
ge-yafang 已提交
1992
**示例:**
A
asfasdff 已提交
1993

G
ge-yafang 已提交
1994
```js
G
ge-yafang 已提交
1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
try {
    let query = new distributedData.Query();
    query.setSuggestIndex("$.name");
    query.setSuggestIndex("0");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
   console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
2005 2006


A
fix up  
asfasdff 已提交
2007 2008
### deviceId<sup>8+</sup> ###

2009
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2010 2011 2012

添加设备ID作为key的前缀。

G
ge-yafang 已提交
2013
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2014

G
ge-yafang 已提交
2015
**参数:**
A
fix up  
asfasdff 已提交
2016

2017 2018
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2019
| deviceId | string  | 是    |指示查询的设备ID。   |
2020

A
fix up  
asfasdff 已提交
2021

G
ge-yafang 已提交
2022
**返回值:**
A
fix up  
asfasdff 已提交
2023

2024 2025
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2026
| [Query](#query8) |返回Query对象。|
A
fix up  
asfasdff 已提交
2027

G
ge-yafang 已提交
2028
**示例:**
A
fix up  
asfasdff 已提交
2029

G
ge-yafang 已提交
2030
```js
G
ge-yafang 已提交
2031 2032 2033 2034 2035 2036 2037 2038
try {
    let query = new distributedData.Query();
    query.deviceId("deviceId");
    console.log("query is " + query.getSqlLike());
} catch (e) {
    console.log("should be ok on Method Chaining : " + e);
}
```
A
fix up  
asfasdff 已提交
2039 2040 2041 2042


### getSqlLike<sup>8+</sup> ###

2043
getSqlLike():string
A
fix up  
asfasdff 已提交
2044

G
ge-yafang 已提交
2045
获取Query对象的查询语句。
A
fix up  
asfasdff 已提交
2046

G
ge-yafang 已提交
2047
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2048

G
ge-yafang 已提交
2049
**返回值:**
A
fix up  
asfasdff 已提交
2050

2051 2052
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2053
| string |返回一个字段列中包含对应子串的结果。|
A
fix up  
asfasdff 已提交
2054

G
ge-yafang 已提交
2055
**示例:**
A
fix up  
asfasdff 已提交
2056

G
ge-yafang 已提交
2057
```js
G
ge-yafang 已提交
2058 2059 2060 2061 2062 2063 2064 2065
try {
    let query = new distributedData.Query();
    let sql1 = query.getSqlLike();
    console.log("GetSqlLike sql=" + sql1);
} catch (e) {
    console.log("dumplicated calls should be ok : " + e);
}
```
A
fix up  
asfasdff 已提交
2066 2067


2068
## KVStore
Z
zengyawen 已提交
2069

G
ge-yafang 已提交
2070 2071 2072
KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。

在调用KVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个KVStore实例。
2073

2074
### put
Z
zengyawen 已提交
2075

A
asfasdff 已提交
2076
put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2077

G
ge-yafang 已提交
2078
添加指定类型键值对到数据库,使用callback异步回调。
Z
zengyawen 已提交
2079

G
ge-yafang 已提交
2080
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2081

G
ge-yafang 已提交
2082
**参数:**
A
asfasdff 已提交
2083

2084 2085 2086
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
Z
zengyawen 已提交
2087
| value  | Uint8Array \| string \| number \| boolean | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
2088
| callback | AsyncCallback&lt;void&gt; | 是    |回调函数。   |
A
asfasdff 已提交
2089

G
ge-yafang 已提交
2090
**示例:**
A
asfasdff 已提交
2091

G
ge-yafang 已提交
2092
```js
G
ge-yafang 已提交
2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2108 2109


2110
### put
A
asfasdff 已提交
2111

A
asfasdff 已提交
2112
put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt;
Z
zengyawen 已提交
2113

G
ge-yafang 已提交
2114
添加指定类型键值对到数据库,使用Promise异步回调。
Z
zengyawen 已提交
2115

G
ge-yafang 已提交
2116
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2117

G
ge-yafang 已提交
2118
**参数:**
A
asfasdff 已提交
2119

2120 2121 2122
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
Z
zengyawen 已提交
2123
| value  | Uint8Array \| string \| number \| boolean | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
A
asfasdff 已提交
2124

G
ge-yafang 已提交
2125
**返回值:**
A
asfasdff 已提交
2126

2127 2128
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2129
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2130

G
ge-yafang 已提交
2131
**示例:**
A
asfasdff 已提交
2132

G
ge-yafang 已提交
2133
```js
G
ge-yafang 已提交
2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2147

2148
### delete
A
asfasdff 已提交
2149

A
asfasdff 已提交
2150
delete(key: string, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2151

G
ge-yafang 已提交
2152
从数据库中删除指定键值的数据,使用callback异步回调。
Z
zengyawen 已提交
2153

G
ge-yafang 已提交
2154
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2155

G
ge-yafang 已提交
2156
**参数:**
A
asfasdff 已提交
2157

2158 2159 2160 2161
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
| callback  | AsyncCallback&lt;void&gt;  | 是    |回调函数。   |
A
asfasdff 已提交
2162

G
ge-yafang 已提交
2163
**示例:**
A
asfasdff 已提交
2164

G
ge-yafang 已提交
2165
```js
G
ge-yafang 已提交
2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
        kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err,data) {
A
asfasdff 已提交
2177
            if (err != undefined) {
G
ge-yafang 已提交
2178
                console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2179 2180
                return;
            }
G
ge-yafang 已提交
2181
            console.log("delete success");
A
asfasdff 已提交
2182
        });
G
ge-yafang 已提交
2183 2184 2185 2186 2187
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2188

2189
### delete
A
asfasdff 已提交
2190

A
asfasdff 已提交
2191
delete(key: string): Promise&lt;void&gt;
Z
zengyawen 已提交
2192

G
ge-yafang 已提交
2193
从数据库中删除指定键值的数据,使用Promise异步回调。
Z
zengyawen 已提交
2194

G
ge-yafang 已提交
2195
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2196

G
ge-yafang 已提交
2197
**参数:**
A
asfasdff 已提交
2198

2199 2200 2201
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
A
asfasdff 已提交
2202

G
ge-yafang 已提交
2203
**返回值:**
A
asfasdff 已提交
2204

2205 2206
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2207
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2208

G
ge-yafang 已提交
2209
**示例:**
A
asfasdff 已提交
2210

G
ge-yafang 已提交
2211
```js
G
ge-yafang 已提交
2212 2213 2214 2215 2216 2217 2218 2219
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
        kvStore.delete(KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log("delete success");
A
asfasdff 已提交
2220
        }).catch((err) => {
G
ge-yafang 已提交
2221
            console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2222
        });
G
ge-yafang 已提交
2223 2224 2225 2226 2227 2228 2229
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
G
ge-yafang 已提交
2230
### on('dataChange')
A
asfasdff 已提交
2231

A
asfasdff 已提交
2232
on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void
Z
zengyawen 已提交
2233

G
ge-yafang 已提交
2234
订阅指定类型的数据变更通知。
Z
zengyawen 已提交
2235

G
ge-yafang 已提交
2236
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2237

G
ge-yafang 已提交
2238
**参数:**
A
asfasdff 已提交
2239

2240 2241
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2242
| event  |string  | 是    |订阅的事件名,固定为'dataChange',表示数据变更事件。       |
Z
zengyawen 已提交
2243 2244
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |
2245

G
ge-yafang 已提交
2246
**示例:**
A
asfasdff 已提交
2247

G
ge-yafang 已提交
2248
```js
G
ge-yafang 已提交
2249 2250 2251 2252 2253
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
A
asfasdff 已提交
2254 2255


G
ge-yafang 已提交
2256
### on('syncComplete')
A
asfasdff 已提交
2257

2258
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
Z
zengyawen 已提交
2259

G
ge-yafang 已提交
2260
订阅同步完成事件回调通知。
Z
zengyawen 已提交
2261

G
ge-yafang 已提交
2262
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2263

G
ge-yafang 已提交
2264
**参数:**
A
asfasdff 已提交
2265

2266 2267
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2268
| event  |string | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。       |
2269
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt; | 是    |回调函数。     |
2270

G
ge-yafang 已提交
2271
**示例:**
A
asfasdff 已提交
2272

2273
```js
G
ge-yafang 已提交
2274 2275
let kvStore;
kvStore.on('syncComplete', function (data) {
2276
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2277 2278
});
```
A
asfasdff 已提交
2279

G
ge-yafang 已提交
2280
### off('dataChange')<sup>8+</sup>
A
asfasdff 已提交
2281

2282
off(event:'dataChange', observer?: Callback&lt;ChangeNotification&gt;): void
A
asfasdff 已提交
2283

G
ge-yafang 已提交
2284
取消订阅数据变更通知。
A
asfasdff 已提交
2285

G
ge-yafang 已提交
2286
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2287

G
ge-yafang 已提交
2288
**参数:**
A
asfasdff 已提交
2289

2290 2291
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2292
| event  |string  | 是    |取消订阅的事件名,固定为'dataChange',表示数据变更事件。       |
Z
zengyawen 已提交
2293
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; |否    |回调函数。 |
A
asfasdff 已提交
2294

G
ge-yafang 已提交
2295
**示例:**
A
asfasdff 已提交
2296

G
ge-yafang 已提交
2297
```js
G
ge-yafang 已提交
2298 2299
let kvStore;
kvStore.on('dataChange', function (data) {
2300
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2301 2302
});
kvStore.off('dataChange', function (data) {
2303
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2304 2305
});
```
A
asfasdff 已提交
2306 2307


2308
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2309

2310
putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2311

G
ge-yafang 已提交
2312
批量插入键值对到KVStore数据库中,使用callback异步回调。
A
asfasdff 已提交
2313

G
ge-yafang 已提交
2314
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2315

G
ge-yafang 已提交
2316
**参数:**
A
asfasdff 已提交
2317

2318 2319 2320 2321
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
| callback |Asyncallback&lt;void&gt; |是     |回调函数。 |
A
asfasdff 已提交
2322

G
ge-yafang 已提交
2323
**示例:**
A
asfasdff 已提交
2324

G
ge-yafang 已提交
2325
```js
G
ge-yafang 已提交
2326 2327 2328 2329 2330 2331 2332 2333 2334 2335
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
2336 2337
            }
        }
G
ge-yafang 已提交
2338
        entries.push(entry);
A
asfasdff 已提交
2339
    }
G
ge-yafang 已提交
2340 2341 2342
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2343
        kvStore.getEntries('batch_test_string_key', function (err,entrys) {
G
ge-yafang 已提交
2344 2345 2346 2347 2348 2349
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
}catch(e) {
G
ge-yafang 已提交
2350
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2351 2352
}
```
A
asfasdff 已提交
2353 2354


2355
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2356

2357
putBatch(entries: Entry[]): Promise&lt;void&gt;
A
asfasdff 已提交
2358

G
ge-yafang 已提交
2359
批量插入键值对到KVStore数据库中,使用Promise异步回调。
A
asfasdff 已提交
2360

G
ge-yafang 已提交
2361
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2362

G
ge-yafang 已提交
2363
**参数:**
A
asfasdff 已提交
2364

2365 2366 2367
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
A
asfasdff 已提交
2368

G
ge-yafang 已提交
2369
**返回值:**
A
asfasdff 已提交
2370

2371 2372
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2373
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2374

G
ge-yafang 已提交
2375
**示例:**
A
asfasdff 已提交
2376

G
ge-yafang 已提交
2377
```js
G
ge-yafang 已提交
2378 2379 2380 2381 2382 2383 2384 2385 2386 2387
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
2388 2389
            }
        }
G
ge-yafang 已提交
2390 2391 2392 2393 2394
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2395
        kvStore.getEntries('batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
2396 2397
            console.log('getEntries success');
            console.log('PutBatch ' + JSON.stringify(entries));
A
asfasdff 已提交
2398
        }).catch((err) => {
G
ge-yafang 已提交
2399
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
2400
        });
G
ge-yafang 已提交
2401 2402 2403 2404
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
G
ge-yafang 已提交
2405
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2406 2407
}
```
A
asfasdff 已提交
2408 2409


2410
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2411

2412
deleteBatch(keys: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2413

G
ge-yafang 已提交
2414
批量删除KVStore数据库中的键值对,使用callback异步回调。
A
asfasdff 已提交
2415

G
ge-yafang 已提交
2416
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2417

G
ge-yafang 已提交
2418
**参数:**
A
asfasdff 已提交
2419

2420 2421 2422 2423
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keys  |string[] | 是    |表示要批量删除的键值对。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2424

G
ge-yafang 已提交
2425
**示例:**
A
asfasdff 已提交
2426

G
ge-yafang 已提交
2427
```js
G
ge-yafang 已提交
2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438
let kvStore;
try {
    let entries = [];
    let keys = [];
    for (var i = 0; i < 5; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
2439 2440
            }
        }
G
ge-yafang 已提交
2441 2442
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2443
    }
G
ge-yafang 已提交
2444 2445 2446
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2447
        kvStore.deleteBatch(keys, async function (err,data) {
G
ge-yafang 已提交
2448 2449 2450 2451 2452 2453 2454
            console.log('deleteBatch success');
        });
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2455 2456


A
asfasdff 已提交
2457
### deleteBatch<sup>8+</sup> ###
A
asfasdff 已提交
2458

2459
deleteBatch(keys: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2460

G
ge-yafang 已提交
2461
批量删除KVStore数据库中的键值对,使用Promise异步回调。
A
asfasdff 已提交
2462

G
ge-yafang 已提交
2463
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2464

G
ge-yafang 已提交
2465
**参数:**
A
asfasdff 已提交
2466

2467 2468 2469
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keys   |string[] | 是    |表示要批量删除的键值对。  |
A
asfasdff 已提交
2470

G
ge-yafang 已提交
2471
**返回值:**
A
asfasdff 已提交
2472

2473 2474
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2475
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2476

G
ge-yafang 已提交
2477
**示例:**
A
asfasdff 已提交
2478

G
ge-yafang 已提交
2479
```js
G
ge-yafang 已提交
2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490
let kvStore;
try {
    let entries = [];
    let keys = [];
    for (var i = 0; i < 5; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
2491 2492
            }
        }
G
ge-yafang 已提交
2493 2494 2495 2496 2497 2498
        entries.push(entry);
        keys.push(key + i);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2499
        kvStore.deleteBatch(keys).then((err) => {
G
ge-yafang 已提交
2500
            console.log('deleteBatch success');
A
asfasdff 已提交
2501
        }).catch((err) => {
G
ge-yafang 已提交
2502
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2503
        });
G
ge-yafang 已提交
2504 2505 2506 2507 2508 2509 2510
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2511 2512


A
asfasdff 已提交
2513
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2514

2515
startTransaction(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2516

G
ge-yafang 已提交
2517
启动KVStore数据库中的事务,使用callback异步回调。
A
asfasdff 已提交
2518

G
ge-yafang 已提交
2519
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2520

G
ge-yafang 已提交
2521
**参数:**
A
asfasdff 已提交
2522

2523 2524 2525
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2526

G
ge-yafang 已提交
2527
**示例:**
A
asfasdff 已提交
2528

G
ge-yafang 已提交
2529
```js
G
ge-yafang 已提交
2530 2531 2532 2533 2534 2535 2536 2537 2538
let kvStore;
function putBatchString(len, prefix) {
    let entries = [];
    for (var i = 0; i < len; i++) {
        var entry = {
            key : prefix + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
2539 2540
            }
        }
G
ge-yafang 已提交
2541
        entries.push(entry);
A
asfasdff 已提交
2542
    }
G
ge-yafang 已提交
2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554
    return entries;
}
try {
    var count = 0;
    kvStore.on('dataChange', 0, function (data) {
        console.log('startTransaction 0' + data)
        count++;
    });
    kvStore.startTransaction(async function (err,data) {
        console.log('startTransaction success');
        let entries = putBatchString(10, 'batch_test_string_key');
        console.log('entries: ' + JSON.stringify(entries));
W
wangkai 已提交
2555
        kvStore.putBatch(entries, async function (err,data) {
G
ge-yafang 已提交
2556
            console.log('putBatch success');
A
asfasdff 已提交
2557
        });
G
ge-yafang 已提交
2558 2559 2560 2561 2562
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2563 2564


A
asfasdff 已提交
2565
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2566

2567
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2568

G
ge-yafang 已提交
2569
启动KVStore数据库中的事务,使用Promise异步回调。
A
asfasdff 已提交
2570

G
ge-yafang 已提交
2571
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2572

G
ge-yafang 已提交
2573
**返回值:**
A
asfasdff 已提交
2574

2575 2576
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2577
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2578

G
ge-yafang 已提交
2579
**示例:**
A
asfasdff 已提交
2580

G
ge-yafang 已提交
2581
```js
G
ge-yafang 已提交
2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597
let kvStore;
try {
    var count = 0;
    kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) {
        console.log('startTransaction ' + JSON.stringify(data));
        count++;
    });
    kvStore.startTransaction().then(async (err) => {
        console.log('startTransaction success');
    }).catch((err) => {
        console.log('startTransaction fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2598 2599


A
asfasdff 已提交
2600
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2601

2602
commit(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2603

G
ge-yafang 已提交
2604
提交KVStore数据库中的事务,使用callback异步回调。
A
asfasdff 已提交
2605

G
ge-yafang 已提交
2606
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2607

G
ge-yafang 已提交
2608
**参数:**
A
asfasdff 已提交
2609

2610 2611 2612
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2613

G
ge-yafang 已提交
2614
**示例:**
A
asfasdff 已提交
2615

G
ge-yafang 已提交
2616
```js
G
ge-yafang 已提交
2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629
let kvStore;
try {
    kvStore.commit(function (err,data) {
        if (err == undefined) {
            console.log('commit success');
        } else {
            console.log('commit fail');
        }
    });
}catch(e) {
    console.log('Commit e ' + e);
}
```
A
asfasdff 已提交
2630 2631


A
asfasdff 已提交
2632
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2633

2634
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2635

G
ge-yafang 已提交
2636
提交KVStore数据库中的事务,使用Promise异步回调。
A
asfasdff 已提交
2637

G
ge-yafang 已提交
2638
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2639

G
ge-yafang 已提交
2640
**返回值:**
A
asfasdff 已提交
2641

2642 2643
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2644
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2645

G
ge-yafang 已提交
2646
**示例:**
A
asfasdff 已提交
2647

G
ge-yafang 已提交
2648
```js
G
ge-yafang 已提交
2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659
let kvStore;
try {
    kvStore.commit().then(async (err) => {
        console.log('commit success');
    }).catch((err) => {
        console.log('commit fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('Commit e ' + e);
}
```
A
asfasdff 已提交
2660 2661


A
asfasdff 已提交
2662
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2663

2664
rollback(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2665

G
ge-yafang 已提交
2666
在KVStore数据库中回滚事务,使用callback异步回调。
A
asfasdff 已提交
2667

G
ge-yafang 已提交
2668
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2669

G
ge-yafang 已提交
2670
**参数:**
A
asfasdff 已提交
2671

2672 2673 2674
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2675

G
ge-yafang 已提交
2676
**示例:**
A
asfasdff 已提交
2677

G
ge-yafang 已提交
2678
```js
G
ge-yafang 已提交
2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691
let kvStore;
try {
    kvStore.rollback(function (err,data) {
        if (err == undefined) {
            console.log('commit success');
        } else {
            console.log('commit fail');
        }
    });
}catch(e) {
    console.log('Rollback e ' + e);
}
```
A
asfasdff 已提交
2692 2693


A
asfasdff 已提交
2694
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2695

2696
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2697

G
ge-yafang 已提交
2698
在KVStore数据库中回滚事务,使用Promise异步回调。
A
asfasdff 已提交
2699

G
ge-yafang 已提交
2700
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2701

G
ge-yafang 已提交
2702
**返回值:**
A
asfasdff 已提交
2703

2704 2705
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2706
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2707

G
ge-yafang 已提交
2708
**示例:**
A
asfasdff 已提交
2709

G
ge-yafang 已提交
2710
```js
G
ge-yafang 已提交
2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721
let kvStore;
try {
    kvStore.rollback().then(async (err) => {
        console.log('rollback success');
    }).catch((err) => {
        console.log('rollback fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('Rollback e ' + e);
}
```
A
asfasdff 已提交
2722 2723


A
asfasdff 已提交
2724
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2725

2726
enableSync(enabled: boolean, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2727

G
ge-yafang 已提交
2728
设定是否开启同步,使用callback异步回调。
A
asfasdff 已提交
2729

G
ge-yafang 已提交
2730
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2731

G
ge-yafang 已提交
2732
**参数:**
A
asfasdff 已提交
2733

2734 2735
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2736
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
2737
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2738

G
ge-yafang 已提交
2739
**示例:**
A
asfasdff 已提交
2740

G
ge-yafang 已提交
2741
```js
G
ge-yafang 已提交
2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754
let kvStore;
try {
    kvStore.enableSync(true, function (err,data) {
        if (err == undefined) {
            console.log('enableSync success');
        } else {
            console.log('enableSync fail');
        }
    });
}catch(e) {
    console.log('EnableSync e ' + e);
}
```
A
asfasdff 已提交
2755 2756


A
asfasdff 已提交
2757
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2758

2759
enableSync(enabled: boolean): Promise&lt;void&gt;
A
asfasdff 已提交
2760

G
ge-yafang 已提交
2761
设定是否开启同步,使用Promise异步回调。
A
asfasdff 已提交
2762

G
ge-yafang 已提交
2763
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2764

G
ge-yafang 已提交
2765
**参数:**
A
asfasdff 已提交
2766

2767 2768
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2769
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
A
asfasdff 已提交
2770

G
ge-yafang 已提交
2771
**返回值:**
A
asfasdff 已提交
2772

2773 2774
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2775
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2776

G
ge-yafang 已提交
2777
**示例:**
A
asfasdff 已提交
2778

G
ge-yafang 已提交
2779
```js
G
ge-yafang 已提交
2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790
let kvStore;
try {
    kvStore.enableSync(true).then((err) => {
        console.log('enableSync success');
    }).catch((err) => {
        console.log('enableSync fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('EnableSync e ' + e);
}
```
A
asfasdff 已提交
2791 2792


A
asfasdff 已提交
2793
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2794

2795
setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2796

G
ge-yafang 已提交
2797
设置同步范围标签,使用callback异步回调。
A
asfasdff 已提交
2798

G
ge-yafang 已提交
2799
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2800

G
ge-yafang 已提交
2801
**参数:**
A
asfasdff 已提交
2802

2803 2804 2805 2806 2807
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2808

G
ge-yafang 已提交
2809
**示例:**
A
asfasdff 已提交
2810

G
ge-yafang 已提交
2811
```js
G
ge-yafang 已提交
2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822
let kvStore;
try {
    const localLabels = ['A', 'B'];
    const remoteSupportLabels = ['C', 'D'];
    kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err,data) {
        console.log('SetSyncRange put success');
    });
}catch(e) {
    console.log('SetSyncRange e ' + e);
}
```
A
asfasdff 已提交
2823 2824


A
asfasdff 已提交
2825
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2826

2827
setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2828

G
ge-yafang 已提交
2829
设置同步范围标签,使用Promise异步回调。
A
asfasdff 已提交
2830

G
ge-yafang 已提交
2831
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2832

G
ge-yafang 已提交
2833
**参数:**
A
asfasdff 已提交
2834

2835 2836 2837 2838 2839
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
2840

G
ge-yafang 已提交
2841
**返回值:**
A
asfasdff 已提交
2842

2843 2844
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2845
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2846

G
ge-yafang 已提交
2847
**示例:**
A
asfasdff 已提交
2848

G
ge-yafang 已提交
2849
```js
G
ge-yafang 已提交
2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862
let kvStore;
try {
    const localLabels = ['A', 'B'];
    const remoteSupportLabels = ['C', 'D'];
    kvStore.setSyncRange(localLabels, remoteSupportLabels).then((err) => {
        console.log('setSyncRange success');
    }).catch((err) => {
        console.log('delete fail ' + err);
    });
}catch(e) {
    console.log('SetSyncRange e ' + e);
}
```
A
asfasdff 已提交
2863 2864


2865
## SubscribeType
Z
zengyawen 已提交
2866

G
ge-yafang 已提交
2867
订阅类型枚举。
Z
zengyawen 已提交
2868

G
ge-yafang 已提交
2869
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2870

G
ge-yafang 已提交
2871
| 名称  | 值   | 说明                    |
2872 2873 2874 2875 2876 2877
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
2878 2879 2880

数据变更时通知的对象,包括数据插入的数据、更新的数据、删除的数据和设备ID。

G
ge-yafang 已提交
2881
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2882

2883 2884 2885 2886 2887 2888 2889 2890
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
2891 2892 2893

存储在数据库中的键值对。

G
ge-yafang 已提交
2894
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2895

2896 2897 2898 2899 2900 2901 2902
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
2903

G
ge-yafang 已提交
2904
存储在数据库中的值对象。
Z
zengyawen 已提交
2905

G
ge-yafang 已提交
2906
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2907

2908 2909 2910
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
G
ge-yafang 已提交
2911
| value | Uint8Array \| string \| number \| boolean| 是  |  是 |值。   |
2912 2913

## ValueType
Z
zengyawen 已提交
2914

G
ge-yafang 已提交
2915
数据类型枚举。
Z
zengyawen 已提交
2916

G
ge-yafang 已提交
2917
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2918

G
ge-yafang 已提交
2919
| 名称  | 值   | 说明                    |
2920 2921 2922 2923 2924 2925 2926 2927 2928
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
2929

G
ge-yafang 已提交
2930 2931 2932 2933 2934
单版本数据库,继承自[KVStore](#kvstore)数据库,提供查询数据和同步数据的方法。

单版本数据库,不对数据所属设备进行区分,不同设备使用相同键写入数据会互相覆盖。比如,可以使用单版本数据库实现个人日历、联系人数据在不同设备间的数据同步。

在调用SingleKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个SingleKVStore实例。
2935

2936
### get
Z
zengyawen 已提交
2937

A
asfasdff 已提交
2938
get(key: string, callback: AsyncCallback&lt;Uint8Array | string | boolean | number&gt;): void
Z
zengyawen 已提交
2939

G
ge-yafang 已提交
2940
获取指定键的值,使用callback异步回调。
Z
zengyawen 已提交
2941

G
ge-yafang 已提交
2942
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2943

G
ge-yafang 已提交
2944
**参数:**
A
asfasdff 已提交
2945

2946 2947 2948
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    |string   | 是    |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。  |
G
ge-yafang 已提交
2949
| callback  |AsyncCallback&lt;Uint8Array \| string \| boolean \| number&gt;) | 是    |回调函数。返回获取查询的值。  |
A
asfasdff 已提交
2950

G
ge-yafang 已提交
2951
**示例:**
A
asfasdff 已提交
2952

G
ge-yafang 已提交
2953
```js
G
ge-yafang 已提交
2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
        kvStore.get(KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log("get success data: " + data);
A
asfasdff 已提交
2966
        });
G
ge-yafang 已提交
2967 2968 2969 2970 2971
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2972 2973


2974
### get
A
asfasdff 已提交
2975

2976
get(key: string): Promise&lt;Uint8Array | string | boolean | number&gt;
Z
zengyawen 已提交
2977

G
ge-yafang 已提交
2978
获取指定键的值,使用Promise异步回调。
Z
zengyawen 已提交
2979

G
ge-yafang 已提交
2980
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2981

G
ge-yafang 已提交
2982
**参数:**
A
asfasdff 已提交
2983

2984 2985 2986 2987
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    |string   | 是    |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。  |

A
asfasdff 已提交
2988

G
ge-yafang 已提交
2989
**返回值:**
A
asfasdff 已提交
2990

2991 2992
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2993
|Promise&lt;Uint8Array \| string \| boolean \| number&gt; |Promise对象。返回获取查询的值。|
A
asfasdff 已提交
2994

G
ge-yafang 已提交
2995
**示例:**
A
asfasdff 已提交
2996

G
ge-yafang 已提交
2997
```js
G
ge-yafang 已提交
2998 2999 3000 3001 3002 3003 3004 3005
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
        kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log("get success data: " + data);
A
asfasdff 已提交
3006
        }).catch((err) => {
G
ge-yafang 已提交
3007
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3008
        });
G
ge-yafang 已提交
3009 3010 3011 3012 3013 3014 3015
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3016

A
asfasdff 已提交
3017
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3018

3019
getEntries(keyPrefix: string, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3020

G
ge-yafang 已提交
3021
获取匹配指定键前缀的所有键值对,使用callback异步回调。
A
asfasdff 已提交
3022

G
ge-yafang 已提交
3023
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3024

G
ge-yafang 已提交
3025
**参数:**
A
asfasdff 已提交
3026

3027 3028 3029
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3030
| callback    |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数。返回匹配指定前缀的键值对列表。  |
A
asfasdff 已提交
3031

G
ge-yafang 已提交
3032
**示例:**
A
asfasdff 已提交
3033

G
ge-yafang 已提交
3034
```js
G
ge-yafang 已提交
3035 3036 3037 3038 3039 3040 3041 3042 3043 3044
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_number_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.INTEGER,
                value : 222
A
asfasdff 已提交
3045 3046
            }
        }
G
ge-yafang 已提交
3047
        entries.push(entry);
A
asfasdff 已提交
3048
    }
G
ge-yafang 已提交
3049 3050
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
3051
        kvStore.getEntries('batch_test_number_key', function (err,entrys) {
G
ge-yafang 已提交
3052 3053 3054 3055 3056 3057 3058 3059 3060
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3061 3062


A
asfasdff 已提交
3063
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3064

3065
getEntries(keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3066

G
ge-yafang 已提交
3067
获取匹配指定键前缀的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
3068

G
ge-yafang 已提交
3069
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3070

G
ge-yafang 已提交
3071
**参数:**
A
asfasdff 已提交
3072

3073 3074 3075
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3076

G
ge-yafang 已提交
3077
**返回值:**
A
asfasdff 已提交
3078

3079 3080
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3081
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配指定前缀的键值对列表。|
A
asfasdff 已提交
3082

G
ge-yafang 已提交
3083
**示例:**
A
asfasdff 已提交
3084

G
ge-yafang 已提交
3085
```js
G
ge-yafang 已提交
3086 3087 3088 3089 3090 3091 3092 3093 3094 3095
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3096 3097
            }
        }
G
ge-yafang 已提交
3098 3099 3100 3101 3102
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
3103
        kvStore.getEntries('batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
3104 3105 3106 3107 3108
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
            console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value));
            console.log('entrys[0].value.value: ' + entrys[0].value.value);
A
asfasdff 已提交
3109
        }).catch((err) => {
G
ge-yafang 已提交
3110
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3111
        });
G
ge-yafang 已提交
3112 3113 3114 3115 3116 3117 3118
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3119 3120


A
asfasdff 已提交
3121
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3122

3123
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3124

G
ge-yafang 已提交
3125
获取与指定Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
3126

G
ge-yafang 已提交
3127
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3128

G
ge-yafang 已提交
3129
**参数:**
A
asfasdff 已提交
3130

3131 3132
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3133
| query  |[Query](#query8)   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3134
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数。返回与指定Query对象匹配的键值对列表。  |
A
asfasdff 已提交
3135

G
ge-yafang 已提交
3136
**示例:**
A
asfasdff 已提交
3137

G
ge-yafang 已提交
3138
```js
G
ge-yafang 已提交
3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
3150 3151
            }
        }
G
ge-yafang 已提交
3152
        entries.push(entry);
A
asfasdff 已提交
3153
    }
G
ge-yafang 已提交
3154 3155 3156 3157 3158
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3159
        kvStore.getEntries(query, function (err,entrys) {
G
ge-yafang 已提交
3160 3161 3162 3163 3164 3165 3166 3167 3168 3169
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3170 3171


A
asfasdff 已提交
3172
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3173

3174
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3175

G
ge-yafang 已提交
3176
获取与指定Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
3177

G
ge-yafang 已提交
3178
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3179

G
ge-yafang 已提交
3180
**参数:**
A
asfasdff 已提交
3181

3182 3183
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3184
| query  |[Query](#query8)   | 是    |表示查询对象。  |
A
asfasdff 已提交
3185

G
ge-yafang 已提交
3186
**返回值:**
A
asfasdff 已提交
3187

3188 3189
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3190
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定Query对象匹配的键值对列表。|
A
asfasdff 已提交
3191

G
ge-yafang 已提交
3192
**示例:**
A
asfasdff 已提交
3193

G
ge-yafang 已提交
3194
```js
W
wangkai 已提交
3195
let kvStore;
G
ge-yafang 已提交
3196 3197 3198 3199 3200 3201 3202 3203 3204 3205
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
3206 3207
            }
        }
G
ge-yafang 已提交
3208 3209 3210 3211 3212 3213 3214
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3215
        kvStore.getEntries(query).then((entrys) => {
G
ge-yafang 已提交
3216
            console.log('getEntries success');
A
asfasdff 已提交
3217
        }).catch((err) => {
G
ge-yafang 已提交
3218
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3219
        });
G
ge-yafang 已提交
3220 3221 3222 3223 3224 3225 3226 3227
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3228 3229


G
ge-yafang 已提交
3230
### getResultSet<sup>8+</sup><a name="singlekvstore_getresultset"></a> ###
A
asfasdff 已提交
3231

3232
getResultSet(keyPrefix: string, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3233

G
ge-yafang 已提交
3234
从KvStore数据库中获取具有指定前缀的结果集,使用callback异步回调。
A
asfasdff 已提交
3235

G
ge-yafang 已提交
3236
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3237

G
ge-yafang 已提交
3238
**参数:**
A
asfasdff 已提交
3239

3240 3241 3242
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
G
ge-yafang 已提交
3243
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数。返回具有指定前缀的结果集。 |
A
asfasdff 已提交
3244

G
ge-yafang 已提交
3245
**示例:**
A
asfasdff 已提交
3246

G
ge-yafang 已提交
3247
```js
G
ge-yafang 已提交
3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3259 3260
            }
        }
G
ge-yafang 已提交
3261
        entries.push(entry);
A
asfasdff 已提交
3262
    }
G
ge-yafang 已提交
3263 3264
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
W
wangkai 已提交
3265
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
3266
            console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
3267 3268 3269 3270 3271 3272 3273 3274 3275 3276
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('GetResultSet closeResultSet success');
            })
        });
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3277 3278


A
asfasdff 已提交
3279
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3280

3281
getResultSet(keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3282

G
ge-yafang 已提交
3283
从KVStore数据库中获取具有指定前缀的结果集,使用Promise异步回调。
A
asfasdff 已提交
3284

G
ge-yafang 已提交
3285
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3286

G
ge-yafang 已提交
3287
**参数:**
A
asfasdff 已提交
3288

3289 3290 3291
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3292

G
ge-yafang 已提交
3293
**返回值:**
A
asfasdff 已提交
3294

3295 3296
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3297
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。返回具有指定前缀的结果集。|
A
asfasdff 已提交
3298

G
ge-yafang 已提交
3299
**示例:**
A
asfasdff 已提交
3300

G
ge-yafang 已提交
3301
```js
G
ge-yafang 已提交
3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3313 3314
            }
        }
G
ge-yafang 已提交
3315
        entries.push(entry);
A
asfasdff 已提交
3316
    }
G
ge-yafang 已提交
3317 3318 3319 3320 3321 3322
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('PutBatch putBatch fail ' + JSON.stringify(err));
    });
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
3323
        console.log('GetResult getResultSet succeed.');
G
ge-yafang 已提交
3324 3325
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3326
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3327 3328 3329 3330 3331 3332 3333 3334 3335 3336
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('GetResult closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResult e ' + e);
}
```
A
asfasdff 已提交
3337 3338


A
asfasdff 已提交
3339
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3340

3341
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3342

G
ge-yafang 已提交
3343
获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3344

G
ge-yafang 已提交
3345
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3346

G
ge-yafang 已提交
3347
**参数:**
A
asfasdff 已提交
3348

3349 3350 3351
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| query  |Query    | 是    |表示查询对象。             |
G
ge-yafang 已提交
3352
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数,获取与指定Query对象匹配的KvStoreResultSet对象。 |
A
asfasdff 已提交
3353

G
ge-yafang 已提交
3354
**示例:**
A
asfasdff 已提交
3355

G
ge-yafang 已提交
3356
```js
G
ge-yafang 已提交
3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3368 3369
            }
        }
G
ge-yafang 已提交
3370
        entries.push(entry);
A
asfasdff 已提交
3371
    }
G
ge-yafang 已提交
3372 3373 3374 3375
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3376
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
3377
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3378 3379 3380 3381 3382 3383 3384
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3385 3386


A
asfasdff 已提交
3387
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3388

3389
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3390

G
ge-yafang 已提交
3391
获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3392

G
ge-yafang 已提交
3393
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3394

G
ge-yafang 已提交
3395
**参数:**
A
asfasdff 已提交
3396

3397 3398
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3399
| query  |[Query](#query8)    | 是    |表示查询对象。             |
A
asfasdff 已提交
3400

G
ge-yafang 已提交
3401
**返回值:**
A
asfasdff 已提交
3402

3403 3404
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3405
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。获取与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
3406

G
ge-yafang 已提交
3407
**示例:**
A
asfasdff 已提交
3408

G
ge-yafang 已提交
3409
```js
G
ge-yafang 已提交
3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3421 3422
            }
        }
G
ge-yafang 已提交
3423
        entries.push(entry);
A
asfasdff 已提交
3424
    }
G
ge-yafang 已提交
3425 3426 3427 3428 3429 3430 3431 3432
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSet(query).then((result) => {
G
ge-yafang 已提交
3433
        console.log(' getResultSet succeed.');
G
ge-yafang 已提交
3434 3435
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3436
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3437 3438 3439 3440 3441
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3442

A
asfasdff 已提交
3443
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3444

3445
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3446

G
ge-yafang 已提交
3447
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3448

G
ge-yafang 已提交
3449
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3450

G
ge-yafang 已提交
3451
**参数:**
A
asfasdff 已提交
3452

3453 3454
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3455 3456
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。             |
A
asfasdff 已提交
3457

G
ge-yafang 已提交
3458
**示例:**
A
asfasdff 已提交
3459

G
ge-yafang 已提交
3460
```js
G
ge-yafang 已提交
3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474
let kvStore;
try {
    let resultSet = null;
    kvStore.closeResultSet(resultSet, function (err, data) {
        if (err == undefined) {
            console.log('closeResultSet success');
        } else {
            console.log('closeResultSet fail');
        }
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
```
A
asfasdff 已提交
3475 3476


A
asfasdff 已提交
3477
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3478

3479
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3480

G
ge-yafang 已提交
3481
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3482

G
ge-yafang 已提交
3483
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3484

G
ge-yafang 已提交
3485
**参数:**
A
asfasdff 已提交
3486

3487 3488
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3489
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
A
asfasdff 已提交
3490

G
ge-yafang 已提交
3491
**返回值:**
A
asfasdff 已提交
3492

3493 3494
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3495
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3496

G
ge-yafang 已提交
3497
**示例:**
A
asfasdff 已提交
3498

G
ge-yafang 已提交
3499
```js
G
ge-yafang 已提交
3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511
let kvStore;
try {
    let resultSet = null;
    kvStore.closeResultSet(resultSet).then(() => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
```
A
asfasdff 已提交
3512 3513


A
asfasdff 已提交
3514
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3515

3516
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3517

G
ge-yafang 已提交
3518
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
3519

G
ge-yafang 已提交
3520
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3521

G
ge-yafang 已提交
3522
**参数:**
A
asfasdff 已提交
3523

3524 3525
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3526
| query  |[Query](#query8)   | 是    |表示查询对象。         |
G
ge-yafang 已提交
3527
| callback  |AsyncCallback&lt;number&gt;   | 是    |回调函数。返回与指定Query对象匹配的结果数。         |
A
asfasdff 已提交
3528

G
ge-yafang 已提交
3529
**示例:**
A
asfasdff 已提交
3530

G
ge-yafang 已提交
3531
```js
G
ge-yafang 已提交
3532 3533 3534 3535 3536 3537 3538 3539 3540 3541
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3542 3543
            }
        }
G
ge-yafang 已提交
3544
        entries.push(entry);
A
asfasdff 已提交
3545
    }
G
ge-yafang 已提交
3546 3547 3548 3549
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3550
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
3551
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3552 3553 3554 3555 3556 3557
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3558 3559


A
asfasdff 已提交
3560
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3561

3562
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3563

G
ge-yafang 已提交
3564
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
3565

G
ge-yafang 已提交
3566
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3567

G
ge-yafang 已提交
3568
**参数:**
A
asfasdff 已提交
3569

3570 3571
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3572
| query  |[Query](#query8)   | 是    |表示查询对象。         |
A
asfasdff 已提交
3573

G
ge-yafang 已提交
3574
**返回值:**
A
asfasdff 已提交
3575

3576 3577
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3578
|Promise&lt;number&gt; |Promise对象。获取与指定Query对象匹配的结果数。|
A
asfasdff 已提交
3579

G
ge-yafang 已提交
3580
**示例:**
A
asfasdff 已提交
3581

G
ge-yafang 已提交
3582
```js
G
ge-yafang 已提交
3583 3584 3585 3586 3587 3588 3589 3590 3591 3592
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
3593 3594
            }
        }
G
ge-yafang 已提交
3595
        entries.push(entry);
A
asfasdff 已提交
3596
    }
G
ge-yafang 已提交
3597 3598 3599 3600 3601 3602 3603 3604
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSize(query).then((resultSize) => {
G
ge-yafang 已提交
3605
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
3606
    }).catch((err) => {
G
ge-yafang 已提交
3607
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3608 3609 3610 3611 3612
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3613 3614


A
asfasdff 已提交
3615
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3616

3617
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3618

G
ge-yafang 已提交
3619
删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
3620

G
ge-yafang 已提交
3621
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3622

G
ge-yafang 已提交
3623
**参数:**
A
asfasdff 已提交
3624

3625 3626 3627 3628
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3629

G
ge-yafang 已提交
3630
**示例:**
A
asfasdff 已提交
3631

G
ge-yafang 已提交
3632
```js
G
ge-yafang 已提交
3633 3634 3635 3636 3637 3638 3639
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('put success');
        const deviceid = 'no_exist_device_id';
W
wangkai 已提交
3640
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
3641 3642 3643 3644
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
3645
                kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
3646 3647 3648
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
3649
        });
G
ge-yafang 已提交
3650 3651 3652 3653 3654
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3655 3656


A
asfasdff 已提交
3657
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3658

3659
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3660

G
ge-yafang 已提交
3661
删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
3662

G
ge-yafang 已提交
3663
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3664

G
ge-yafang 已提交
3665
**参数:**
A
asfasdff 已提交
3666

3667 3668 3669
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3670

G
ge-yafang 已提交
3671
**返回值:**
A
asfasdff 已提交
3672

3673 3674
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3675
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3676

G
ge-yafang 已提交
3677
**示例:**
A
asfasdff 已提交
3678

G
ge-yafang 已提交
3679
```js
G
ge-yafang 已提交
3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
        console.log('removeDeviceData put success');
    }).catch((err) => {
        console.log('put fail ' + JSON.stringify(err));
    });
    const deviceid = 'no_exist_device_id';
    kvStore.removeDeviceData(deviceid).then((err) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
        console.log('get success data:' + data);
    }).catch((err) => {
        console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3704 3705


G
ge-yafang 已提交
3706
### on('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
3707

3708
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3709

G
ge-yafang 已提交
3710
订阅同步完成事件回调通知。
A
asfasdff 已提交
3711

G
ge-yafang 已提交
3712
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3713

G
ge-yafang 已提交
3714
**参数:**
A
asfasdff 已提交
3715

3716 3717
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3718
| event  |string   | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
3719
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 是    |回调函数。用于向调用方发送同步结果的回调。    |
A
asfasdff 已提交
3720

G
ge-yafang 已提交
3721
**示例:**
A
asfasdff 已提交
3722

G
ge-yafang 已提交
3723
```js
G
ge-yafang 已提交
3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739
let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
```
A
asfasdff 已提交
3740 3741


G
ge-yafang 已提交
3742
### off('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
3743

3744
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3745

G
ge-yafang 已提交
3746
取消订阅同步完成事件回调通知。
A
asfasdff 已提交
3747

G
ge-yafang 已提交
3748
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3749

G
ge-yafang 已提交
3750
**参数:**
A
asfasdff 已提交
3751

3752 3753
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3754
| event  |string   | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
3755
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 否    |回调函数。用于向调用方发送同步结果的回调。    |
3756

G
ge-yafang 已提交
3757
**示例:**
A
asfasdff 已提交
3758

G
ge-yafang 已提交
3759
```js
G
ge-yafang 已提交
3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770
let kvStore;
try {
    const func = function (data) {
        console.log('syncComplete ' + data)
    };
    kvStore.on('syncComplete', func);
    kvStore.off('syncComplete', func);
}catch(e) {
    console.log('syncComplete e ' + e);
}
```
A
asfasdff 已提交
3771 3772


3773
### sync
A
asfasdff 已提交
3774

A
asfasdff 已提交
3775
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
Z
zengyawen 已提交
3776

G
ge-yafang 已提交
3777
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
3778

Z
zuojiangjiang 已提交
3779
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
Z
zengyawen 已提交
3780

G
ge-yafang 已提交
3781
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3782

G
ge-yafang 已提交
3783
**参数:**
A
asfasdff 已提交
3784

3785 3786 3787
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
G
ge-yafang 已提交
3788
| mode  |[SyncMode](#syncmode)   | 是   |同步模式。    |
3789
| allowedDelayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |
A
asfasdff 已提交
3790

G
ge-yafang 已提交
3791
**示例:**
A
asfasdff 已提交
3792

G
ge-yafang 已提交
3793
```js
G
ge-yafang 已提交
3794 3795 3796
let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
```
A
asfasdff 已提交
3797

A
asfasdff 已提交
3798
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3799

3800
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3801

G
ge-yafang 已提交
3802
设置数据库同步允许的默认延迟,使用callback异步回调。
A
asfasdff 已提交
3803

G
ge-yafang 已提交
3804
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3805

G
ge-yafang 已提交
3806
**参数:**
A
asfasdff 已提交
3807

3808 3809 3810 3811 3812
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |
| callback  |AsyncCallback&lt;void&gt;  | 是   |回调函数。   |

G
ge-yafang 已提交
3813
**示例:**
A
asfasdff 已提交
3814

G
ge-yafang 已提交
3815
```js
G
ge-yafang 已提交
3816 3817 3818 3819 3820 3821 3822 3823 3824 3825
let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs, function (err,data) {
        console.log('SetSyncParam put success');
    });
}catch(e) {
    console.log('testSingleKvStoreSetSyncParam e ' + e);
}
```
A
asfasdff 已提交
3826 3827


A
asfasdff 已提交
3828
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3829

3830
setSyncParam(defaultAllowedDelayMs: number): Promise&lt;void&gt;
A
asfasdff 已提交
3831

G
ge-yafang 已提交
3832
设置数据库同步允许的默认延迟,使用Promise异步回调。
A
asfasdff 已提交
3833

G
ge-yafang 已提交
3834
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3835

G
ge-yafang 已提交
3836
**参数:**
A
asfasdff 已提交
3837

3838 3839 3840 3841
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |

A
asfasdff 已提交
3842

G
ge-yafang 已提交
3843
**返回值:**
A
asfasdff 已提交
3844

3845 3846
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3847
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3848

G
ge-yafang 已提交
3849
**示例:**
A
asfasdff 已提交
3850

G
ge-yafang 已提交
3851
```js
G
ge-yafang 已提交
3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863
let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs).then((err) => {
        console.log('SetSyncParam put success');
    }).catch((err) => {
        console.log('SetSyncParam put fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('SetSyncParam e ' + e);
}
```
A
asfasdff 已提交
3864 3865


A
asfasdff 已提交
3866
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3867

3868
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
3869

G
ge-yafang 已提交
3870
获取数据库的安全级别,使用callback异步回调。
A
asfasdff 已提交
3871

G
ge-yafang 已提交
3872
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3873

G
ge-yafang 已提交
3874
**参数:**
A
asfasdff 已提交
3875

3876 3877
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3878
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。返回数据库的安全级别。    |
A
asfasdff 已提交
3879

G
ge-yafang 已提交
3880
**示例:**
A
asfasdff 已提交
3881

G
ge-yafang 已提交
3882
```js
G
ge-yafang 已提交
3883 3884 3885 3886 3887 3888 3889 3890 3891
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
    console.log('GetSecurityLeve e ' + e);
}
```
A
asfasdff 已提交
3892 3893


A
asfasdff 已提交
3894
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3895

3896
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
3897

G
ge-yafang 已提交
3898
获取数据库的安全级别,使用Promise异步回调。
A
asfasdff 已提交
3899

G
ge-yafang 已提交
3900
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3901

G
ge-yafang 已提交
3902
**返回值:**
A
asfasdff 已提交
3903

3904 3905
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3906
|Promise&lt;[SecurityLevel](#securitylevel)&gt; |Promise对象。返回数据库的安全级别。|
3907

G
ge-yafang 已提交
3908
**示例:**
A
asfasdff 已提交
3909

G
ge-yafang 已提交
3910
```js
G
ge-yafang 已提交
3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921
let kvStore;
try {
    kvStore.getSecurityLevel().then((data) => {
        console.log(' getSecurityLevel success');
    }).catch((err) => {
        console.log('getSecurityLevel fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetSecurityLeve e ' + e);
}
```
A
asfasdff 已提交
3922 3923


A
asfasdff 已提交
3924
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
3925

G
ge-yafang 已提交
3926 3927 3928 3929 3930 3931 3932
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。

比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。

在调用DeviceKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个DeviceKVStore实例。
A
asfasdff 已提交
3933

A
asfasdff 已提交
3934
### get<sup>8+</sup> ###
A
asfasdff 已提交
3935

3936
get(deviceId: string, key: string, callback: AsyncCallback&lt;boolean|string|number|Uint8Array&gt;): void
A
asfasdff 已提交
3937

G
ge-yafang 已提交
3938
获取与指定设备ID和key匹配的string值,使用callback异步回调。
A
asfasdff 已提交
3939

G
ge-yafang 已提交
3940
**系统能力:**   SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
3941

G
ge-yafang 已提交
3942
**参数:**
A
asfasdff 已提交
3943

3944 3945 3946
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
3947
| key       |string  | 是    |表示要查询key值的键。    |
G
ge-yafang 已提交
3948
| callback  |AsyncCallback&lt;boolean\|string\|number\|Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |
A
asfasdff 已提交
3949

G
ge-yafang 已提交
3950
**示例:**
A
asfasdff 已提交
3951

G
ge-yafang 已提交
3952
```js
G
ge-yafang 已提交
3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try{
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log('get success');
        });
    })
}catch(e) {
    console.log('get e' + e);
}
```
A
asfasdff 已提交
3967 3968


A
asfasdff 已提交
3969
### get<sup>8+</sup> ###
A
asfasdff 已提交
3970

3971
get(deviceId: string, key: string): Promise&lt;boolean|string|number|Uint8Array&gt;
A
asfasdff 已提交
3972

G
ge-yafang 已提交
3973
获取与指定设备ID和key匹配的string值,使用Promise异步回调。
A
asfasdff 已提交
3974

G
ge-yafang 已提交
3975
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
3976

G
ge-yafang 已提交
3977
**参数:**
A
asfasdff 已提交
3978

3979 3980 3981
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
3982
| key       |string  | 是    |表示要查询key值的键。    |
A
asfasdff 已提交
3983

G
ge-yafang 已提交
3984
**返回值:**
A
asfasdff 已提交
3985

3986 3987
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3988
|Promise&lt;boolean\|string\|number\|Uint8Array&gt; |Promise对象。返回匹配给定条件的字符串值。|
A
asfasdff 已提交
3989

G
ge-yafang 已提交
3990
**示例:**
A
asfasdff 已提交
3991

G
ge-yafang 已提交
3992
```js
G
ge-yafang 已提交
3993 3994 3995 3996 3997 3998 3999 4000 4001 4002
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => {
        console.log(' put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log('get success');
        }).catch((err) => {
            console.log('get fail ' + JSON.stringify(err));
A
asfasdff 已提交
4003
        });
G
ge-yafang 已提交
4004 4005 4006 4007 4008 4009 4010
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
4011 4012


A
asfasdff 已提交
4013
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4014

4015
getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4016

G
ge-yafang 已提交
4017
获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。
A
asfasdff 已提交
4018

G
ge-yafang 已提交
4019
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4020

G
ge-yafang 已提交
4021
**参数:**
A
asfasdff 已提交
4022

4023 4024 4025 4026 4027
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是  |回调函数,返回满足给定条件的所有键值对的列表。    |
A
asfasdff 已提交
4028

G
ge-yafang 已提交
4029
**示例:**
A
asfasdff 已提交
4030

G
ge-yafang 已提交
4031
```js
G
ge-yafang 已提交
4032 4033 4034 4035 4036 4037 4038 4039 4040 4041
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4042 4043
            }
        }
G
ge-yafang 已提交
4044
        entries.push(entry);
A
asfasdff 已提交
4045
    }
G
ge-yafang 已提交
4046 4047 4048
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
4049
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entrys) {
G
ge-yafang 已提交
4050 4051 4052 4053 4054 4055 4056 4057 4058
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4059 4060


A
asfasdff 已提交
4061
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4062

4063
getEntries(deviceId: string, keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4064

G
ge-yafang 已提交
4065
获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
4066

G
ge-yafang 已提交
4067
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4068

G
ge-yafang 已提交
4069
**参数:**
A
asfasdff 已提交
4070

4071 4072 4073 4074
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4075

G
ge-yafang 已提交
4076
**返回值:**
A
asfasdff 已提交
4077

4078 4079
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4080
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配给定条件的所有键值对的列表。|
A
asfasdff 已提交
4081

G
ge-yafang 已提交
4082
**示例:**
A
asfasdff 已提交
4083

G
ge-yafang 已提交
4084
```js
G
ge-yafang 已提交
4085 4086 4087 4088 4089 4090 4091 4092 4093 4094
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4095 4096
            }
        }
G
ge-yafang 已提交
4097 4098 4099 4100 4101
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
4102
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
4103 4104 4105 4106 4107
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
            console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value));
            console.log('entrys[0].value.value: ' + entrys[0].value.value);
A
asfasdff 已提交
4108
        }).catch((err) => {
G
ge-yafang 已提交
4109
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4110
        });
G
ge-yafang 已提交
4111 4112 4113 4114 4115 4116 4117
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4118 4119


A
asfasdff 已提交
4120
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4121

4122
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4123

G
ge-yafang 已提交
4124
获取与指定Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
4125

G
ge-yafang 已提交
4126
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4127

G
ge-yafang 已提交
4128
**参数:**
A
asfasdff 已提交
4129

4130 4131
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4132
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4133
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4134

G
ge-yafang 已提交
4135
**示例:**
A
asfasdff 已提交
4136

G
ge-yafang 已提交
4137
```js
G
ge-yafang 已提交
4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4149 4150
            }
        }
G
ge-yafang 已提交
4151
        entries.push(entry);
A
asfasdff 已提交
4152
    }
G
ge-yafang 已提交
4153 4154 4155 4156 4157 4158
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4159
        kvStore.getEntries(query, function (err,entrys) {
G
ge-yafang 已提交
4160 4161 4162 4163 4164 4165 4166 4167 4168 4169
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4170 4171


A
asfasdff 已提交
4172
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4173

4174
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4175

G
ge-yafang 已提交
4176
获取与指定Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
4177

G
ge-yafang 已提交
4178
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4179

G
ge-yafang 已提交
4180
**参数:**
A
asfasdff 已提交
4181

4182 4183
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4184
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4185

G
ge-yafang 已提交
4186
**返回值:**
A
asfasdff 已提交
4187

4188 4189
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4190
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定Query对象匹配的键值对列表。|
A
asfasdff 已提交
4191

G
ge-yafang 已提交
4192
**示例:**
A
asfasdff 已提交
4193

G
ge-yafang 已提交
4194
```js
G
ge-yafang 已提交
4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4206 4207
            }
        }
G
ge-yafang 已提交
4208 4209 4210 4211 4212 4213 4214
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4215
        kvStore.getEntries(query).then((entrys) => {
G
ge-yafang 已提交
4216
            console.log('getEntries success');
A
asfasdff 已提交
4217
        }).catch((err) => {
G
ge-yafang 已提交
4218
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4219
        });
G
ge-yafang 已提交
4220 4221 4222 4223 4224 4225 4226 4227
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4228 4229


A
asfasdff 已提交
4230
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4231

4232
getEntries(deviceId: string, query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4233

G
ge-yafang 已提交
4234
获取与指定设备ID和Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
4235

G
ge-yafang 已提交
4236
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4237

G
ge-yafang 已提交
4238
**参数:**
A
asfasdff 已提交
4239

4240 4241 4242
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4243
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4244
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4245

G
ge-yafang 已提交
4246
**示例:**
A
asfasdff 已提交
4247

G
ge-yafang 已提交
4248
```js
G
ge-yafang 已提交
4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4260 4261
            }
        }
G
ge-yafang 已提交
4262
        entries.push(entry);
A
asfasdff 已提交
4263
    }
G
ge-yafang 已提交
4264 4265 4266 4267 4268 4269
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
W
wangkai 已提交
4270
        kvStore.getEntries('localDeviceId', query, function (err,entrys) {
G
ge-yafang 已提交
4271 4272 4273 4274 4275 4276 4277 4278 4279 4280
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4281 4282


A
asfasdff 已提交
4283
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4284

4285
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4286

G
ge-yafang 已提交
4287
获取与指定设备ID和Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
4288

G
ge-yafang 已提交
4289
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4290

G
ge-yafang 已提交
4291
**参数:**
A
asfasdff 已提交
4292

4293 4294 4295
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4296
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4297

G
ge-yafang 已提交
4298
**返回值:**
A
asfasdff 已提交
4299

4300 4301
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4302
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。|
A
asfasdff 已提交
4303

G
ge-yafang 已提交
4304
**示例:**
A
asfasdff 已提交
4305

G
ge-yafang 已提交
4306
```js
G
ge-yafang 已提交
4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317
let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4318 4319
            }
        }
G
ge-yafang 已提交
4320 4321 4322 4323 4324 4325 4326 4327
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
W
wangkai 已提交
4328
        kvStore.getEntries('localDeviceId', query).then((entrys) => {
G
ge-yafang 已提交
4329
            console.log('getEntries success');
A
asfasdff 已提交
4330
        }).catch((err) => {
G
ge-yafang 已提交
4331
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4332
        });
G
ge-yafang 已提交
4333 4334 4335 4336 4337 4338 4339 4340
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4341 4342


G
ge-yafang 已提交
4343
### getResultSet<sup>8+</sup><a name="devicekvstore_getresultset"></a> ###
A
asfasdff 已提交
4344

4345
getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4346

G
ge-yafang 已提交
4347
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4348

G
ge-yafang 已提交
4349
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4350

G
ge-yafang 已提交
4351
**参数:**
A
asfasdff 已提交
4352

4353 4354 4355 4356
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
G
ge-yafang 已提交
4357
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4358

G
ge-yafang 已提交
4359
**示例:**
A
asfasdff 已提交
4360

G
ge-yafang 已提交
4361
```js
G
ge-yafang 已提交
4362 4363 4364 4365
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
4366
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4367
        resultSet = result;
W
wangkai 已提交
4368
        kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4369 4370 4371 4372 4373 4374 4375
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4376 4377


A
asfasdff 已提交
4378
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4379

4380
getResultSet(deviceId: string, keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4381

G
ge-yafang 已提交
4382
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4383

G
ge-yafang 已提交
4384
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4385

G
ge-yafang 已提交
4386
**参数:**
A
asfasdff 已提交
4387

4388 4389 4390 4391
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4392

G
ge-yafang 已提交
4393
**返回值:**
A
asfasdff 已提交
4394

4395 4396
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4397
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4398

G
ge-yafang 已提交
4399
**示例:**
A
asfasdff 已提交
4400

G
ge-yafang 已提交
4401
```js
G
ge-yafang 已提交
4402 4403 4404 4405
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
G
ge-yafang 已提交
4406
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4407 4408
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4409
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4410 4411 4412 4413 4414 4415 4416 4417 4418 4419
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4420 4421


A
asfasdff 已提交
4422
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4423

4424
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4425

G
ge-yafang 已提交
4426
获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4427

G
ge-yafang 已提交
4428
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4429

G
ge-yafang 已提交
4430
**参数:**
A
asfasdff 已提交
4431

4432 4433
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4434
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4435
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4436

G
ge-yafang 已提交
4437
**示例:**
A
asfasdff 已提交
4438

G
ge-yafang 已提交
4439
```js
G
ge-yafang 已提交
4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4451 4452
            }
        }
G
ge-yafang 已提交
4453
        entries.push(entry);
A
asfasdff 已提交
4454
    }
G
ge-yafang 已提交
4455 4456 4457 4458 4459
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4460
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
4461
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4462
            resultSet = result;
W
wangkai 已提交
4463
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4464 4465 4466 4467 4468 4469 4470 4471
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4472 4473


A
asfasdff 已提交
4474
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4475

4476
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4477

G
ge-yafang 已提交
4478
获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4479

G
ge-yafang 已提交
4480
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4481

G
ge-yafang 已提交
4482
**参数:**
A
asfasdff 已提交
4483

4484 4485
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4486
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4487

G
ge-yafang 已提交
4488
**返回值:**
A
asfasdff 已提交
4489

4490 4491
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4492
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4493

G
ge-yafang 已提交
4494
**示例:**
A
asfasdff 已提交
4495

G
ge-yafang 已提交
4496
```js
G
ge-yafang 已提交
4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4508 4509
            }
        }
G
ge-yafang 已提交
4510
        entries.push(entry);
A
asfasdff 已提交
4511
    }
G
ge-yafang 已提交
4512 4513 4514 4515 4516 4517 4518 4519 4520 4521
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + err);
    });
    const query = new distributedData.Query();
    query.deviceId('localDeviceId');
    query.prefixKey("batch_test");
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.getResultSet(query).then((result) => {
G
ge-yafang 已提交
4522
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4523 4524
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4525
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4526 4527 4528 4529 4530 4531 4532 4533 4534 4535
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4536 4537


A
asfasdff 已提交
4538
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4539

4540
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4541

G
ge-yafang 已提交
4542
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4543

G
ge-yafang 已提交
4544
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4545

G
ge-yafang 已提交
4546
**参数:**
A
asfasdff 已提交
4547

4548 4549 4550
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4551
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4552
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4553

G
ge-yafang 已提交
4554
**示例:**
A
asfasdff 已提交
4555

G
ge-yafang 已提交
4556
```js
G
ge-yafang 已提交
4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4568 4569
            }
        }
G
ge-yafang 已提交
4570
        entries.push(entry);
A
asfasdff 已提交
4571
    }
G
ge-yafang 已提交
4572 4573 4574 4575
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4576
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
G
ge-yafang 已提交
4577
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4578
            resultSet = result;
W
wangkai 已提交
4579
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4580 4581 4582 4583 4584 4585 4586 4587
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4588 4589


A
asfasdff 已提交
4590
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4591

4592
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4593

G
ge-yafang 已提交
4594
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4595

G
ge-yafang 已提交
4596
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4597

G
ge-yafang 已提交
4598
**参数:**
A
asfasdff 已提交
4599

4600 4601 4602
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4603
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4604

G
ge-yafang 已提交
4605
**返回值:**
A
asfasdff 已提交
4606

4607 4608
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4609
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4610

G
ge-yafang 已提交
4611
**示例:**
A
asfasdff 已提交
4612

G
ge-yafang 已提交
4613
```js
G
ge-yafang 已提交
4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624
let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4625 4626
            }
        }
G
ge-yafang 已提交
4627
        entries.push(entry);
A
asfasdff 已提交
4628
    }
G
ge-yafang 已提交
4629 4630 4631 4632 4633 4634 4635 4636
    kvStore.putBatch(entries).then(async (err) => {
        console.log('GetResultSet putBatch success');
    }).catch((err) => {
        console.log('PutBatch putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSet('localDeviceId', query).then((result) => {
G
ge-yafang 已提交
4637
        console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
4638 4639
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4640
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653
    });
    query.deviceId('localDeviceId');
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('GetResultSet closeResultSet success');
    }).catch((err) => {
        console.log('GetResultSet closeResultSet fail ' + JSON.stringify(err));
    });

}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4654 4655


A
asfasdff 已提交
4656
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4657

4658
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4659

G
ge-yafang 已提交
4660
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4661

G
ge-yafang 已提交
4662
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4663

G
ge-yafang 已提交
4664
**参数:**
A
asfasdff 已提交
4665

4666 4667
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4668
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
4669
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
4670

G
ge-yafang 已提交
4671
**示例:**
A
asfasdff 已提交
4672

G
ge-yafang 已提交
4673
```js
G
ge-yafang 已提交
4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688
let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet, function (err, data) {
        if (err == undefined) {
            console.log('closeResultSet success');
        } else {
            console.log('closeResultSet fail');
        }
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
```
A
asfasdff 已提交
4689 4690


A
asfasdff 已提交
4691
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4692

4693
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
4694

G
ge-yafang 已提交
4695
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4696

G
ge-yafang 已提交
4697
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4698

G
ge-yafang 已提交
4699
**参数:**
A
asfasdff 已提交
4700

4701 4702
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4703
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
A
asfasdff 已提交
4704

G
ge-yafang 已提交
4705
**返回值:**
A
asfasdff 已提交
4706

4707 4708
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4709
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4710

G
ge-yafang 已提交
4711
**示例:**
A
asfasdff 已提交
4712

G
ge-yafang 已提交
4713
```js
G
ge-yafang 已提交
4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726
let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet).then(() => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}
```
A
asfasdff 已提交
4727 4728


A
asfasdff 已提交
4729
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4730

4731
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
4732

G
ge-yafang 已提交
4733
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4734

G
ge-yafang 已提交
4735
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4736

G
ge-yafang 已提交
4737
**参数:**
A
asfasdff 已提交
4738

4739 4740
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4741
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4742
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定Query对象匹配的结果数。    |
A
asfasdff 已提交
4743

G
ge-yafang 已提交
4744
**示例:**
A
asfasdff 已提交
4745

G
ge-yafang 已提交
4746
```js
G
ge-yafang 已提交
4747 4748 4749 4750 4751 4752 4753 4754 4755 4756
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4757 4758
            }
        }
G
ge-yafang 已提交
4759
        entries.push(entry);
A
asfasdff 已提交
4760
    }
G
ge-yafang 已提交
4761 4762 4763 4764 4765
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4766
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
4767
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4768 4769 4770 4771 4772 4773
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4774 4775


A
asfasdff 已提交
4776
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4777

4778
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4779

G
ge-yafang 已提交
4780
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
4781

G
ge-yafang 已提交
4782
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4783

G
ge-yafang 已提交
4784
**参数:**
A
asfasdff 已提交
4785

4786 4787
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4788
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4789

G
ge-yafang 已提交
4790
**返回值:**
A
asfasdff 已提交
4791

4792 4793
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4794
|Promise&lt;number&gt; |Promise对象。返回与指定Query对象匹配的结果数。|
A
asfasdff 已提交
4795

G
ge-yafang 已提交
4796
**示例:**
A
asfasdff 已提交
4797

G
ge-yafang 已提交
4798
```js
G
ge-yafang 已提交
4799 4800 4801 4802 4803 4804 4805 4806 4807 4808
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4809 4810
            }
        }
G
ge-yafang 已提交
4811
        entries.push(entry);
A
asfasdff 已提交
4812
    }
G
ge-yafang 已提交
4813 4814 4815 4816 4817 4818 4819 4820 4821
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    query.deviceId('localDeviceId');
    kvStore.getResultSize(query).then((resultSize) => {
G
ge-yafang 已提交
4822
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4823
    }).catch((err) => {
G
ge-yafang 已提交
4824
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4825 4826 4827 4828 4829
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4830 4831


A
asfasdff 已提交
4832
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4833

A
asfasdff 已提交
4834
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
4835

G
ge-yafang 已提交
4836
获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4837

G
ge-yafang 已提交
4838
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4839

G
ge-yafang 已提交
4840
**参数:**
A
asfasdff 已提交
4841

4842 4843 4844
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4845
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4846
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的结果数。    |
A
asfasdff 已提交
4847

G
ge-yafang 已提交
4848
**示例:**
A
asfasdff 已提交
4849

G
ge-yafang 已提交
4850
```js
G
ge-yafang 已提交
4851 4852 4853 4854 4855 4856 4857 4858 4859 4860
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4861 4862
            }
        }
G
ge-yafang 已提交
4863
        entries.push(entry);
A
asfasdff 已提交
4864
    }
G
ge-yafang 已提交
4865 4866 4867 4868
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4869
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
G
ge-yafang 已提交
4870
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4871 4872 4873 4874 4875 4876
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4877 4878


A
asfasdff 已提交
4879
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4880

4881
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4882

G
ge-yafang 已提交
4883
获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
4884

G
ge-yafang 已提交
4885
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4886

G
ge-yafang 已提交
4887
**参数:**
A
asfasdff 已提交
4888

4889 4890 4891
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4892
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4893

G
ge-yafang 已提交
4894
**返回值:**
A
asfasdff 已提交
4895

4896 4897
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4898
|Promise&lt;number&gt; |Promise对象。返回与指定设备ID和Query对象匹配的结果数。|
A
asfasdff 已提交
4899

G
ge-yafang 已提交
4900
**示例:**
A
asfasdff 已提交
4901

G
ge-yafang 已提交
4902
```js
G
ge-yafang 已提交
4903 4904 4905 4906 4907 4908 4909 4910 4911 4912
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
A
asfasdff 已提交
4913 4914
            }
        }
G
ge-yafang 已提交
4915
        entries.push(entry);
A
asfasdff 已提交
4916
    }
G
ge-yafang 已提交
4917 4918 4919 4920 4921 4922 4923 4924
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    var query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSize('localDeviceId', query).then((resultSize) => {
G
ge-yafang 已提交
4925
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4926
    }).catch((err) => {
G
ge-yafang 已提交
4927
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4928 4929 4930 4931 4932
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4933 4934


A
asfasdff 已提交
4935
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4936

4937
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4938

G
ge-yafang 已提交
4939
从当前数据库中删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
4940

G
ge-yafang 已提交
4941
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4942

G
ge-yafang 已提交
4943
**参数:**
A
asfasdff 已提交
4944

4945 4946 4947 4948
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
4949

G
ge-yafang 已提交
4950
**示例:**
A
asfasdff 已提交
4951

G
ge-yafang 已提交
4952
```js
G
ge-yafang 已提交
4953 4954 4955 4956 4957 4958 4959
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('RemoveDeviceData  put success');
        const deviceid = 'no_exist_device_id';
W
wangkai 已提交
4960
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
4961 4962 4963 4964
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
4965
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
4966 4967 4968
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
4969
        });
G
ge-yafang 已提交
4970 4971 4972 4973 4974
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
4975 4976


A
asfasdff 已提交
4977
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4978

4979
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
4980

G
ge-yafang 已提交
4981
从当前数据库中删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
4982

G
ge-yafang 已提交
4983
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4984

G
ge-yafang 已提交
4985
**参数:**
A
asfasdff 已提交
4986

4987 4988 4989
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
4990

G
ge-yafang 已提交
4991
**返回值:**
A
asfasdff 已提交
4992

4993 4994
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4995
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4996

G
ge-yafang 已提交
4997
**示例:**
A
asfasdff 已提交
4998

G
ge-yafang 已提交
4999
```js
G
ge-yafang 已提交
5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023
let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
        console.log('RemoveDeviceData put success');
    }).catch((err) => {
        console.log('RemoveDeviceData put fail ' + JSON.stringify(err));
    });
    const deviceid = 'no_exist_device_id';
    kvStore.removeDeviceData(deviceid).then((err) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
        console.log('RemoveDeviceData get success data:' + data);
    }).catch((err) => {
        console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
5024 5025


A
asfasdff 已提交
5026
### sync<sup>8+</sup> ###
A
asfasdff 已提交
5027

5028
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
A
asfasdff 已提交
5029

G
ge-yafang 已提交
5030
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
5031

Z
zuojiangjiang 已提交
5032
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
A
asfasdff 已提交
5033

G
ge-yafang 已提交
5034
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5035

G
ge-yafang 已提交
5036
**参数:**
A
asfasdff 已提交
5037

5038 5039 5040
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
G
ge-yafang 已提交
5041
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
5042 5043
| allowedDelayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

G
ge-yafang 已提交
5044
**示例:**
A
asfasdff 已提交
5045

G
ge-yafang 已提交
5046
```js
G
ge-yafang 已提交
5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        kvStore.sync(devices, mode);
    });
}catch(e) {
    console.log('Sync e' + e);
}
```
A
asfasdff 已提交
5064

G
ge-yafang 已提交
5065
### on('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
5066

Z
zengyawen 已提交
5067
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5068

G
ge-yafang 已提交
5069
订阅同步完成事件回调通知。
A
asfasdff 已提交
5070

G
ge-yafang 已提交
5071
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5072

G
ge-yafang 已提交
5073
**参数:**
A
asfasdff 已提交
5074

5075 5076
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5077
| event    |string      | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5078
| syncCallback            |Callback<Array&lt;[string, number]&gt;> | 是    |回调函数。用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5079

G
ge-yafang 已提交
5080
**示例:**
Z
zengyawen 已提交
5081

G
ge-yafang 已提交
5082
```js
W
wangkai 已提交
5083
let kvStore;
G
ge-yafang 已提交
5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
```
A
asfasdff 已提交
5099 5100


G
ge-yafang 已提交
5101
### off('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
5102

5103
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5104

A
asfasdff 已提交
5105
取消订阅同步完成事件回调通知,该方法为同步方法。
A
asfasdff 已提交
5106

G
ge-yafang 已提交
5107
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5108

G
ge-yafang 已提交
5109
**参数:**
A
asfasdff 已提交
5110

5111 5112
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5113
| event         |string                           | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5114
| syncCallback  |Callback<Array&lt;[string, number]&gt;&gt; | 否    |回调函数。用于向调用方发送同步结果的回调。  |
5115

G
ge-yafang 已提交
5116
**示例:**
A
asfasdff 已提交
5117

G
ge-yafang 已提交
5118
```js
G
ge-yafang 已提交
5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129
let kvStore;
try {
    const func = function (data) {
        console.log('syncComplete ' + data)
    };
    kvStore.on('syncComplete', func);
    kvStore.off('syncComplete', func);
}catch(e) {
    console.log('syncComplete e ' + e);
}
```
A
asfasdff 已提交
5130

5131
## SyncMode
Z
zengyawen 已提交
5132

G
ge-yafang 已提交
5133
同步模式枚举。
Z
zengyawen 已提交
5134

G
ge-yafang 已提交
5135
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
5136

G
ge-yafang 已提交
5137
| 名称       | 值     | 说明                    |
5138 5139
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
G
ge-yafang 已提交
5140
| PUSH_ONLY  |1          |表示只能从本端推送数据到远端。 |
5141
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |