js-apis-distributed-data.md 148.1 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
>
Q
qing 已提交
16 17 18
>- 从API Version 9开始,该接口不再维护,推荐使用新接口[`@ohos.data.distributedKVStore`](js-apis-distributedKVStore.md)。
>
>- 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
19

20

21
## 导入模块
Z
zengyawen 已提交
22

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


28
## distributedData.createKVManager
Z
zengyawen 已提交
29

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

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

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

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

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

G
ge-yafang 已提交
43
**示例:**
Q
qing 已提交
44
```js
45

G
ge-yafang 已提交
46
let kvManager;
Q
qing 已提交
47 48 49 50 51 52
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
S
siyuan.liu 已提交
53 54
        }
    }
Q
qing 已提交
55 56 57 58 59 60 61 62 63 64
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
        if (err) {
            console.log("Failed to create KVManager: "  + JSON.stringify(err));
            return;
        }
        console.log("Succeeded in creating KVManager");
        kvManager = manager;
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
W
wangkai 已提交
65 66
}
```
A
asfasdff 已提交
67

68
## distributedData.createKVManager
A
asfasdff 已提交
69

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

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

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

G
ge-yafang 已提交
76
**参数:**
Z
zengyawen 已提交
77

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

G
ge-yafang 已提交
82
**返回值:**
A
asfasdff 已提交
83

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

G
ge-yafang 已提交
88
**示例:**
Q
qing 已提交
89
```js
90

W
wangkai 已提交
91
let kvManager;
Q
qing 已提交
92 93 94 95 96 97
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
S
siyuan.liu 已提交
98 99
        }
    }
Q
qing 已提交
100 101 102 103 104 105 106 107 108 109
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
        if (err) {
            console.log("Failed to create KVManager: "  + JSON.stringify(err));
            return;
        }
        console.log("Succeeded in creating KVManager");
        kvManager = manager;
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
G
ge-yafang 已提交
110 111
}
```
A
asfasdff 已提交
112

113
## KVManagerConfig
Z
zengyawen 已提交
114 115 116

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

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

W
wangkai 已提交
119 120 121 122
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ----- | ------ | ------ | ------ | ------ |
| userInfo | [UserInfo](#userinfo) | 是  | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 是  | 调用方的包名。 |
123 124

## UserInfo
Z
zengyawen 已提交
125 126 127

用户信息。

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

W
wangkai 已提交
130
| 名称 | 类型 | 可读 | 可写 | 说明 |
W
wangkai 已提交
131
| ----- | ------ | ------ | ------ | ------ |
W
wangkai 已提交
132 133
| userId | string | 是  | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 是  | 指示要设置的用户类型。 |
134 135 136


## UserType
Z
zengyawen 已提交
137

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

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

G
ge-yafang 已提交
142
| 名称 | 值 | 说明 |
143 144 145 146 147
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
148

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

151
### getKVStore
Z
zengyawen 已提交
152

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

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

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

G
ge-yafang 已提交
159
**参数:**
A
asfasdff 已提交
160

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

G
ge-yafang 已提交
167
**示例:**
A
asfasdff 已提交
168

G
ge-yafang 已提交
169
```js
G
ge-yafang 已提交
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
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 已提交
193 194


195
### getKVStore
A
asfasdff 已提交
196

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

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

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

G
ge-yafang 已提交
203
**参数:**
A
asfasdff 已提交
204

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


G
ge-yafang 已提交
211
**返回值:**
A
asfasdff 已提交
212

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

G
ge-yafang 已提交
217
**示例:**
218

G
ge-yafang 已提交
219
```js
G
ge-yafang 已提交
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
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 已提交
241

242
### closeKVStore<sup>8+</sup>
A
asfasdff 已提交
243

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

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

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

G
ge-yafang 已提交
250
**参数:**
251 252


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

G
ge-yafang 已提交
260
**示例:**
A
asfasdff 已提交
261

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

A
asfasdff 已提交
287

288
### closeKVStore<sup>8+</sup>
A
asfasdff 已提交
289

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

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

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

G
ge-yafang 已提交
296
**参数:**
A
asfasdff 已提交
297

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

G
ge-yafang 已提交
304
**返回值:**
A
asfasdff 已提交
305

306 307
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
308
| Promise\<void> | 无返回结果的Promise对象。 |
A
asfasdff 已提交
309

G
ge-yafang 已提交
310
**示例:**
A
asfasdff 已提交
311

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


342
### deleteKVStore<sup>8+</sup>
A
asfasdff 已提交
343

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

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

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

G
ge-yafang 已提交
350
**参数:**
A
asfasdff 已提交
351

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

G
ge-yafang 已提交
358
**示例:**
A
asfasdff 已提交
359

G
ge-yafang 已提交
360
```js
G
ge-yafang 已提交
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
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 已提交
376
        kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
G
ge-yafang 已提交
377
            console.log('deleteKVStore success');
A
asfasdff 已提交
378
        });
G
ge-yafang 已提交
379 380 381 382 383
    });
} catch (e) {
    console.log('DeleteKVStore e ' + e);
}
```
A
asfasdff 已提交
384

385
### deleteKVStore<sup>8+</sup>
A
asfasdff 已提交
386

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

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

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

G
ge-yafang 已提交
393
**参数:**
Z
zengyawen 已提交
394

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


G
ge-yafang 已提交
401
**返回值:**
A
asfasdff 已提交
402

403 404
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
405
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
A
asfasdff 已提交
406

G
ge-yafang 已提交
407
**示例:**
A
asfasdff 已提交
408

G
ge-yafang 已提交
409
```js
G
ge-yafang 已提交
410 411 412 413 414 415 416 417 418 419 420 421
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 已提交
422
    kvManager.getKVStore('storeId', options).then(async (store) => {
G
ge-yafang 已提交
423 424
        console.log('getKVStore success');
        kvStore = store;
W
wangkai 已提交
425
        kvManager.deleteKVStore('appId', 'storeId').then(() => {
G
ge-yafang 已提交
426
            console.log('deleteKVStore success');
A
asfasdff 已提交
427
        }).catch((err) => {
G
ge-yafang 已提交
428
            console.log('deleteKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
429
        });
G
ge-yafang 已提交
430 431 432 433 434 435 436
    }).catch((err) => {
        console.log('getKVStore err ' + JSON.stringify(err));
    });
} catch (e) {
    console.log('deleteKVStore e ' + e);
}
```
A
asfasdff 已提交
437 438


439
### getAllKVStoreId<sup>8+</sup>
A
asfasdff 已提交
440

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

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

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

G
ge-yafang 已提交
447
**参数:**
A
asfasdff 已提交
448

W
wangkai 已提交
449
| 参数名  | 类型 | 必填  | 说明                    |
450 451
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
G
ge-yafang 已提交
452
| callback | AsyncCallback&lt;string[]&gt; | 是   |回调函数。返回所有创建的KvStore数据库的storeId。 |
A
asfasdff 已提交
453

G
ge-yafang 已提交
454
**示例:**
A
asfasdff 已提交
455

G
ge-yafang 已提交
456
```js
G
ge-yafang 已提交
457 458 459 460 461 462 463 464 465 466
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 已提交
467 468


469
### getAllKVStoreId<sup>8+</sup>
A
asfasdff 已提交
470

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

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

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

G
ge-yafang 已提交
477
**参数:**
A
asfasdff 已提交
478

W
wangkai 已提交
479
| 参数名  | 类型 | 必填  | 说明                    |
480 481
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
482 483


G
ge-yafang 已提交
484
**返回值:**
Z
zengyawen 已提交
485

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

G
ge-yafang 已提交
490
**示例:**
A
asfasdff 已提交
491

G
ge-yafang 已提交
492
```js
G
ge-yafang 已提交
493 494 495
let kvManager;
try {
    console.log('GetAllKVStoreId');
496
    kvManager.getAllKVStoreId('appId').then((data) => {
G
ge-yafang 已提交
497 498 499 500 501 502 503 504 505
        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 已提交
506 507


508
### on('distributedDataServiceDie')<sup>8+</sup>
A
asfasdff 已提交
509

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

512
订阅服务状态变更通知,此方法为同步方法。
A
asfasdff 已提交
513

W
wangkai 已提交
514
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
515

G
ge-yafang 已提交
516
**参数:**
A
asfasdff 已提交
517

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

G
ge-yafang 已提交
523
**示例:**
A
asfasdff 已提交
524

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


539
### off('distributedDataServiceDie')<sup>8+</sup>
A
asfasdff 已提交
540

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

543
取消订阅服务状态变更通知,此方法为同步方法。
A
asfasdff 已提交
544

W
wangkai 已提交
545
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
546

G
ge-yafang 已提交
547
**参数:**
A
asfasdff 已提交
548

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

A
asfasdff 已提交
554

G
ge-yafang 已提交
555
**示例:**
A
asfasdff 已提交
556

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

571
## Options
Z
zengyawen 已提交
572 573 574

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

575

W
wangkai 已提交
576 577
| 名称  | 类型 | 可读   | 可写   | 说明                    |
| -----  | ------  | ------  | ------  | -------------------|
W
wangkai 已提交
578 579 580 581 582 583 584
| createIfMissing  | boolean | 是 | 是 | 当数据库文件不存在时是否创建数据库,默认创建。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
| encrypt  | boolean | 是 | 是 |设置数据库文件是否加密,默认不加密。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core     |
| backup  | boolean | 是 | 是 |设置数据库文件是否备份,默认备份。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
| autoSync  | boolean | 是 | 是 |设置数据库文件是否自动同步,默认不自动同步。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC     |
| kvStoreType | [KVStoreType](#kvstoretype) | 是 | 是 |设置要创建的数据库类型,默认为多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
| securityLevel | [SecurityLevel](#securitylevel) | 是 | 是 |设置数据库安全级别,默认不设置安全级别。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core  |
| schema<sup>8+</sup> | [Schema](#schema8) | 是 | 是 | 设置定义存储在数据库中的值。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore |
585 586 587


## KVStoreType
Z
zengyawen 已提交
588

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

591

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


## SecurityLevel
Z
zengyawen 已提交
600

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

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


## Constants
Z
zengyawen 已提交
614 615 616

KVStore常量。

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

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

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

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

W
wangkai 已提交
632
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
A
asfasdff 已提交
633

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

641
### constructor<sup>8+</sup> 
642 643 644 645 646

constructor()

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

W
wangkai 已提交
647
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
648

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

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

W
wangkai 已提交
653
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
654

W
wangkai 已提交
655
| 名称  | 类型 | 可读 | 可写 | 说明                    |
W
wangkai 已提交
656
| ---   | ----  | ----  | ----  | ----------------------- |
W
wangkai 已提交
657 658 659
| nullable<sup>8+</sup>  | boolean | 是 | 是 | 表示数据库字段是否可以为空。   |
| default<sup>8+</sup>  | string | 是 | 是 | 表示Fieldnode的默认值。 |
| type<sup>8+</sup>  | number | 是 | 是 | 表示指定节点对应数据类型的值。 |
660

661
### constructor<sup>8+</sup>
662 663 664 665 666

constructor(name: string)

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

W
wangkai 已提交
667
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
668

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

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

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

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

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

W
wangkai 已提交
681
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
682

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

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

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

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

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

G
ge-yafang 已提交
697
```js
G
ge-yafang 已提交
698 699 700 701 702 703 704 705 706
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 已提交
707
    console.log("appendNode " + JSON.stringify(node));
G
ge-yafang 已提交
708 709 710 711 712 713 714 715
    child1 = null;
    child2 = null;
    child3 = null;
    node = null;
} catch (e) {
    console.log("AppendChild " + e);
}
```
A
asfasdff 已提交
716 717


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

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

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

724

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

constructor() 

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

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

1191

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

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

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

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


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

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

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

G
ge-yafang 已提交
1209
```js
G
ge-yafang 已提交
1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220
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 已提交
1221 1222


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

1473

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

G
ge-yafang 已提交
1694
```js
G
ge-yafang 已提交
1695 1696 1697 1698 1699 1700 1701 1702
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) {
W
wangkai 已提交
1703
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1704 1705
}
```
A
asfasdff 已提交
1706 1707


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

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

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

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

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

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

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

G
ge-yafang 已提交
1724
```js
G
ge-yafang 已提交
1725 1726 1727 1728 1729 1730 1731 1732
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) {
W
wangkai 已提交
1733
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1734 1735
}
```
A
asfasdff 已提交
1736 1737


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


1846
### isNotNull<sup>8+</sup>
A
asfasdff 已提交
1847

1848
isNotNull(field: string): Query
A
asfasdff 已提交
1849

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

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

G
ge-yafang 已提交
1854
**参数:**
A
asfasdff 已提交
1855

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

G
ge-yafang 已提交
1860
**返回值:**
A
asfasdff 已提交
1861

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

G
ge-yafang 已提交
1866
**示例:**
A
asfasdff 已提交
1867

G
ge-yafang 已提交
1868
```js
G
ge-yafang 已提交
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) {
W
wangkai 已提交
1875
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1876 1877
}
```
A
asfasdff 已提交
1878 1879


1880
### beginGroup<sup>8+</sup>
A
asfasdff 已提交
1881

1882
beginGroup(): Query
A
asfasdff 已提交
1883 1884 1885

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

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

G
ge-yafang 已提交
1888
**返回值:**
A
asfasdff 已提交
1889

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

G
ge-yafang 已提交
1894
**示例:**
A
asfasdff 已提交
1895

G
ge-yafang 已提交
1896
```js
G
ge-yafang 已提交
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) {
W
wangkai 已提交
1905
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1906 1907
}
```
A
asfasdff 已提交
1908 1909


1910
### endGroup<sup>8+</sup>
A
asfasdff 已提交
1911

1912
endGroup(): Query
A
asfasdff 已提交
1913 1914 1915

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

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

G
ge-yafang 已提交
1918
**返回值:**
A
asfasdff 已提交
1919

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

G
ge-yafang 已提交
1924
**示例:**
A
asfasdff 已提交
1925

G
ge-yafang 已提交
1926
```js
G
ge-yafang 已提交
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) {
W
wangkai 已提交
1935
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1936 1937
}
```
A
asfasdff 已提交
1938 1939


1940
### prefixKey<sup>8+</sup>
A
asfasdff 已提交
1941

1942
prefixKey(prefix: string): Query
A
asfasdff 已提交
1943 1944 1945

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

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

G
ge-yafang 已提交
1948
**参数:**
A
asfasdff 已提交
1949

W
wangkai 已提交
1950
| 参数名  | 类型 | 必填  | 说明                    |
1951 1952
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
1953

G
ge-yafang 已提交
1954
**返回值:**
A
asfasdff 已提交
1955

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

G
ge-yafang 已提交
1960
**示例:**
A
asfasdff 已提交
1961

G
ge-yafang 已提交
1962
```js
G
ge-yafang 已提交
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) {
W
wangkai 已提交
1970
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1971 1972
}
```
A
asfasdff 已提交
1973 1974


1975
### setSuggestIndex<sup>8+</sup>
A
asfasdff 已提交
1976

1977
setSuggestIndex(index: string): Query
A
asfasdff 已提交
1978 1979 1980

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

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

G
ge-yafang 已提交
1983
**参数:**
A
asfasdff 已提交
1984

W
wangkai 已提交
1985
| 参数名  | 类型 | 必填  | 说明                    |
1986 1987
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
1988

G
ge-yafang 已提交
1989
**返回值:**
A
asfasdff 已提交
1990

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

G
ge-yafang 已提交
1995
**示例:**
A
asfasdff 已提交
1996

G
ge-yafang 已提交
1997
```js
G
ge-yafang 已提交
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) {
W
wangkai 已提交
2005
   console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
2006 2007
}
```
A
asfasdff 已提交
2008 2009


2010
### deviceId<sup>8+</sup>
A
fix up  
asfasdff 已提交
2011

2012
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2013 2014 2015

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

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

G
ge-yafang 已提交
2018
**参数:**
A
fix up  
asfasdff 已提交
2019

W
wangkai 已提交
2020
| 参数名  | 类型 | 必填  | 说明                    |
2021
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2022
| deviceId | string  | 是    |指示查询的设备ID。   |
2023

A
fix up  
asfasdff 已提交
2024

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

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

G
ge-yafang 已提交
2031
**示例:**
A
fix up  
asfasdff 已提交
2032

G
ge-yafang 已提交
2033
```js
G
ge-yafang 已提交
2034 2035 2036 2037 2038 2039 2040 2041
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 已提交
2042 2043


2044
### getSqlLike<sup>8+</sup>
A
fix up  
asfasdff 已提交
2045

2046
getSqlLike():string
A
fix up  
asfasdff 已提交
2047

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

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

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

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

G
ge-yafang 已提交
2058
**示例:**
A
fix up  
asfasdff 已提交
2059

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


2071
## KVStore
Z
zengyawen 已提交
2072

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

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

2077
### put
Z
zengyawen 已提交
2078

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

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

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

G
ge-yafang 已提交
2085
**参数:**
A
asfasdff 已提交
2086

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

G
ge-yafang 已提交
2093
**示例:**
A
asfasdff 已提交
2094

G
ge-yafang 已提交
2095
```js
G
ge-yafang 已提交
2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110
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 已提交
2111

2112
### put
A
asfasdff 已提交
2113

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

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

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

G
ge-yafang 已提交
2120
**参数:**
A
asfasdff 已提交
2121

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

G
ge-yafang 已提交
2127
**返回值:**
A
asfasdff 已提交
2128

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

G
ge-yafang 已提交
2133
**示例:**
A
asfasdff 已提交
2134

G
ge-yafang 已提交
2135
```js
G
ge-yafang 已提交
2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148
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 已提交
2149

2150
### delete
A
asfasdff 已提交
2151

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

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

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

G
ge-yafang 已提交
2158
**参数:**
A
asfasdff 已提交
2159

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

G
ge-yafang 已提交
2165
**示例:**
A
asfasdff 已提交
2166

G
ge-yafang 已提交
2167
```js
G
ge-yafang 已提交
2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178
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 已提交
2179
            if (err != undefined) {
G
ge-yafang 已提交
2180
                console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2181 2182
                return;
            }
G
ge-yafang 已提交
2183
            console.log("delete success");
A
asfasdff 已提交
2184
        });
G
ge-yafang 已提交
2185 2186 2187 2188 2189
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2190

2191
### delete
A
asfasdff 已提交
2192

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

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

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

G
ge-yafang 已提交
2199
**参数:**
A
asfasdff 已提交
2200

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

G
ge-yafang 已提交
2205
**返回值:**
A
asfasdff 已提交
2206

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

G
ge-yafang 已提交
2211
**示例:**
A
asfasdff 已提交
2212

G
ge-yafang 已提交
2213
```js
G
ge-yafang 已提交
2214 2215 2216 2217 2218 2219 2220 2221
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 已提交
2222
        }).catch((err) => {
G
ge-yafang 已提交
2223
            console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2224
        });
G
ge-yafang 已提交
2225 2226 2227 2228 2229 2230 2231
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
W
wangkai 已提交
2232

G
ge-yafang 已提交
2233
### on('dataChange')
A
asfasdff 已提交
2234

2235
on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void
Z
zengyawen 已提交
2236

2237
订阅指定类型的数据变更通知,此方法为同步方法。
Z
zengyawen 已提交
2238

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

G
ge-yafang 已提交
2241
**参数:**
A
asfasdff 已提交
2242

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

G
ge-yafang 已提交
2249
**示例:**
A
asfasdff 已提交
2250

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

G
ge-yafang 已提交
2258
### on('syncComplete')
A
asfasdff 已提交
2259

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

2262
订阅同步完成事件回调通知,此方法为同步方法。
Z
zengyawen 已提交
2263

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

G
ge-yafang 已提交
2266
**参数:**
A
asfasdff 已提交
2267

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

G
ge-yafang 已提交
2273
**示例:**
A
asfasdff 已提交
2274

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

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

2284
off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void
A
asfasdff 已提交
2285

2286
取消订阅数据变更通知,此方法为同步方法。
A
asfasdff 已提交
2287

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

G
ge-yafang 已提交
2290
**参数:**
A
asfasdff 已提交
2291

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

G
ge-yafang 已提交
2297
**示例:**
A
asfasdff 已提交
2298

G
ge-yafang 已提交
2299
```js
Z
zuojiangjiang 已提交
2300 2301
let kvStore;
class KvstoreModel {
2302 2303 2304 2305
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
Z
zuojiangjiang 已提交
2306 2307
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
2308 2309 2310
        }
    }
    unsubscribeDataChange() {
Z
zuojiangjiang 已提交
2311 2312
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
2313 2314 2315
        }
    }
}
G
ge-yafang 已提交
2316
```
A
asfasdff 已提交
2317

2318
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2319

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

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

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

G
ge-yafang 已提交
2326
**参数:**
A
asfasdff 已提交
2327

W
wangkai 已提交
2328
| 参数名  | 类型 | 必填  | 说明                    |
2329 2330 2331
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
| callback |Asyncallback&lt;void&gt; |是     |回调函数。 |
A
asfasdff 已提交
2332

G
ge-yafang 已提交
2333
**示例:**
A
asfasdff 已提交
2334

G
ge-yafang 已提交
2335
```js
G
ge-yafang 已提交
2336 2337 2338 2339 2340 2341 2342 2343 2344 2345
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 已提交
2346 2347
            }
        }
G
ge-yafang 已提交
2348
        entries.push(entry);
A
asfasdff 已提交
2349
    }
G
ge-yafang 已提交
2350 2351 2352
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
2353
        kvStore.getEntries('batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
2354
            console.log('getEntries success');
2355 2356
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
2357 2358 2359
        });
    });
}catch(e) {
G
ge-yafang 已提交
2360
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2361 2362
}
```
A
asfasdff 已提交
2363 2364


2365
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2366

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

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

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

G
ge-yafang 已提交
2373
**参数:**
A
asfasdff 已提交
2374

W
wangkai 已提交
2375
| 参数名  | 类型 | 必填  | 说明                    |
2376 2377
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
A
asfasdff 已提交
2378

G
ge-yafang 已提交
2379
**返回值:**
A
asfasdff 已提交
2380

2381 2382
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2383
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2384

G
ge-yafang 已提交
2385
**示例:**
A
asfasdff 已提交
2386

G
ge-yafang 已提交
2387
```js
G
ge-yafang 已提交
2388 2389 2390 2391 2392 2393 2394 2395 2396 2397
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 已提交
2398
            }
Q
qing 已提交
2399 2400 2401 2402 2403
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
W
wangkai 已提交
2404
        console.log('putBatch success');
Q
qing 已提交
2405 2406 2407 2408 2409 2410
        kvStore.getEntries('batch_test_string_key').then((entries) => {
            console.log('getEntries success');
            console.log('PutBatch ' + JSON.stringify(entries));
        }).catch((err) => {
            console.log('getEntries fail ' + JSON.stringify(err));
        });
W
wangkai 已提交
2411 2412 2413 2414 2415 2416 2417
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + JSON.stringify(e));
}
```
A
asfasdff 已提交
2418

2419
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2420

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

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

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

G
ge-yafang 已提交
2427
**参数:**
A
asfasdff 已提交
2428

W
wangkai 已提交
2429
| 参数名  | 类型 | 必填  | 说明                    |
2430 2431 2432
| -----  | ------  | ----  | ----------------------- |
| keys  |string[] | 是    |表示要批量删除的键值对。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2433

G
ge-yafang 已提交
2434
**示例:**
A
asfasdff 已提交
2435

G
ge-yafang 已提交
2436
```js
G
ge-yafang 已提交
2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447
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 已提交
2448 2449
            }
        }
G
ge-yafang 已提交
2450 2451
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2452
    }
G
ge-yafang 已提交
2453 2454 2455
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2456
        kvStore.deleteBatch(keys, async function (err,data) {
G
ge-yafang 已提交
2457 2458 2459 2460 2461 2462 2463
            console.log('deleteBatch success');
        });
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2464 2465


2466
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2467

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

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

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

G
ge-yafang 已提交
2474
**参数:**
A
asfasdff 已提交
2475

W
wangkai 已提交
2476
| 参数名  | 类型 | 必填  | 说明                    |
2477 2478
| -----  | ------  | ----  | ----------------------- |
| keys   |string[] | 是    |表示要批量删除的键值对。  |
A
asfasdff 已提交
2479

G
ge-yafang 已提交
2480
**返回值:**
A
asfasdff 已提交
2481

2482 2483
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2484
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2485

G
ge-yafang 已提交
2486
**示例:**
A
asfasdff 已提交
2487

G
ge-yafang 已提交
2488
```js
G
ge-yafang 已提交
2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499
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 已提交
2500 2501
            }
        }
G
ge-yafang 已提交
2502 2503 2504 2505 2506 2507
        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 已提交
2508
        kvStore.deleteBatch(keys).then((err) => {
G
ge-yafang 已提交
2509
            console.log('deleteBatch success');
A
asfasdff 已提交
2510
        }).catch((err) => {
G
ge-yafang 已提交
2511
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2512
        });
G
ge-yafang 已提交
2513 2514 2515 2516 2517 2518 2519
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2520 2521


2522
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
2523

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

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

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

G
ge-yafang 已提交
2530
**参数:**
A
asfasdff 已提交
2531

W
wangkai 已提交
2532
| 参数名  | 类型 | 必填  | 说明                    |
2533 2534
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2535

G
ge-yafang 已提交
2536
**示例:**
A
asfasdff 已提交
2537

G
ge-yafang 已提交
2538
```js
G
ge-yafang 已提交
2539 2540 2541 2542 2543 2544 2545 2546 2547
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 已提交
2548 2549
            }
        }
G
ge-yafang 已提交
2550
        entries.push(entry);
A
asfasdff 已提交
2551
    }
G
ge-yafang 已提交
2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563
    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 已提交
2564
        kvStore.putBatch(entries, async function (err,data) {
G
ge-yafang 已提交
2565
            console.log('putBatch success');
A
asfasdff 已提交
2566
        });
G
ge-yafang 已提交
2567 2568 2569 2570 2571
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2572 2573


2574
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
2575

2576
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2577

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

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

G
ge-yafang 已提交
2582
**返回值:**
A
asfasdff 已提交
2583

2584 2585
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2586
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2587

G
ge-yafang 已提交
2588
**示例:**
A
asfasdff 已提交
2589

G
ge-yafang 已提交
2590
```js
G
ge-yafang 已提交
2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606
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 已提交
2607 2608


2609
### commit<sup>8+</sup>
A
asfasdff 已提交
2610

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

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

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

G
ge-yafang 已提交
2617
**参数:**
A
asfasdff 已提交
2618

W
wangkai 已提交
2619
| 参数名  | 类型 | 必填  | 说明                    |
2620 2621
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2622

G
ge-yafang 已提交
2623
**示例:**
A
asfasdff 已提交
2624

G
ge-yafang 已提交
2625
```js
G
ge-yafang 已提交
2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638
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 已提交
2639 2640


2641
### commit<sup>8+</sup>
A
asfasdff 已提交
2642

2643
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2644

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

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

G
ge-yafang 已提交
2649
**返回值:**
A
asfasdff 已提交
2650

2651 2652
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2653
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2654

G
ge-yafang 已提交
2655
**示例:**
A
asfasdff 已提交
2656

G
ge-yafang 已提交
2657
```js
G
ge-yafang 已提交
2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668
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 已提交
2669 2670


2671
### rollback<sup>8+</sup>
A
asfasdff 已提交
2672

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

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

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

G
ge-yafang 已提交
2679
**参数:**
A
asfasdff 已提交
2680

W
wangkai 已提交
2681
| 参数名  | 类型 | 必填  | 说明                    |
2682 2683
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2684

G
ge-yafang 已提交
2685
**示例:**
A
asfasdff 已提交
2686

G
ge-yafang 已提交
2687
```js
G
ge-yafang 已提交
2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700
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 已提交
2701 2702


2703
### rollback<sup>8+</sup>
A
asfasdff 已提交
2704

2705
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2706

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

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

G
ge-yafang 已提交
2711
**返回值:**
A
asfasdff 已提交
2712

2713 2714
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2715
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2716

G
ge-yafang 已提交
2717
**示例:**
A
asfasdff 已提交
2718

G
ge-yafang 已提交
2719
```js
G
ge-yafang 已提交
2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730
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 已提交
2731 2732


2733
### enableSync<sup>8+</sup>
A
asfasdff 已提交
2734

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

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

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

G
ge-yafang 已提交
2741
**参数:**
A
asfasdff 已提交
2742

W
wangkai 已提交
2743
| 参数名  | 类型 | 必填  | 说明                    |
2744
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2745
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
2746
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2747

G
ge-yafang 已提交
2748
**示例:**
A
asfasdff 已提交
2749

G
ge-yafang 已提交
2750
```js
G
ge-yafang 已提交
2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763
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 已提交
2764 2765


2766
### enableSync<sup>8+</sup>
A
asfasdff 已提交
2767

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

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

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

G
ge-yafang 已提交
2774
**参数:**
A
asfasdff 已提交
2775

W
wangkai 已提交
2776
| 参数名  | 类型 | 必填  | 说明                    |
2777
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2778
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
A
asfasdff 已提交
2779

G
ge-yafang 已提交
2780
**返回值:**
A
asfasdff 已提交
2781

2782 2783
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2784
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2785

G
ge-yafang 已提交
2786
**示例:**
A
asfasdff 已提交
2787

G
ge-yafang 已提交
2788
```js
G
ge-yafang 已提交
2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799
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 已提交
2800 2801


2802
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
2803

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

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

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

G
ge-yafang 已提交
2810
**参数:**
A
asfasdff 已提交
2811

W
wangkai 已提交
2812
| 参数名  | 类型 | 必填  | 说明                    |
2813 2814 2815 2816
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2817

G
ge-yafang 已提交
2818
**示例:**
A
asfasdff 已提交
2819

G
ge-yafang 已提交
2820
```js
G
ge-yafang 已提交
2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831
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 已提交
2832 2833


2834
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
2835

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

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

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

G
ge-yafang 已提交
2842
**参数:**
A
asfasdff 已提交
2843

W
wangkai 已提交
2844
| 参数名  | 类型 | 必填  | 说明                    |
2845 2846 2847 2848
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
2849

G
ge-yafang 已提交
2850
**返回值:**
A
asfasdff 已提交
2851

2852 2853
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2854
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2855

G
ge-yafang 已提交
2856
**示例:**
A
asfasdff 已提交
2857

G
ge-yafang 已提交
2858
```js
G
ge-yafang 已提交
2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871
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 已提交
2872 2873


2874
## SubscribeType
Z
zengyawen 已提交
2875

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

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

G
ge-yafang 已提交
2880
| 名称  | 值   | 说明                    |
2881 2882 2883 2884 2885 2886
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
2887 2888 2889

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

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

W
wangkai 已提交
2892
| 名称  | 类型   |可读   |可写   | 说明                    |
2893 2894 2895 2896 2897 2898 2899
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
2900 2901 2902

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

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

W
wangkai 已提交
2905
| 名称  | 类型   |可读   |可写   | 说明                    |
2906 2907 2908 2909 2910 2911
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
2912

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

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

W
wangkai 已提交
2917
| 名称  | 类型   |可读   |可写   | 说明                    |
2918 2919
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
G
ge-yafang 已提交
2920
| value | Uint8Array \| string \| number \| boolean| 是  |  是 |值。   |
2921 2922

## ValueType
Z
zengyawen 已提交
2923

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

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

G
ge-yafang 已提交
2928
| 名称  | 值   | 说明                    |
2929 2930 2931 2932 2933 2934 2935 2936 2937
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
2938

G
ge-yafang 已提交
2939 2940 2941 2942 2943
单版本数据库,继承自[KVStore](#kvstore)数据库,提供查询数据和同步数据的方法。

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

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

2945
### get
Z
zengyawen 已提交
2946

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

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

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

G
ge-yafang 已提交
2953
**参数:**
A
asfasdff 已提交
2954

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

G
ge-yafang 已提交
2960
**示例:**
A
asfasdff 已提交
2961

G
ge-yafang 已提交
2962
```js
G
ge-yafang 已提交
2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974
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 已提交
2975
        });
G
ge-yafang 已提交
2976 2977 2978 2979 2980
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2981 2982


2983
### get
A
asfasdff 已提交
2984

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

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

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

G
ge-yafang 已提交
2991
**参数:**
A
asfasdff 已提交
2992

W
wangkai 已提交
2993
| 参数名  | 类型 | 必填  | 说明                    |
2994 2995 2996
| -----  | ------  | ----  | ----------------------- |
| key    |string   | 是    |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。  |

A
asfasdff 已提交
2997

G
ge-yafang 已提交
2998
**返回值:**
A
asfasdff 已提交
2999

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

G
ge-yafang 已提交
3004
**示例:**
A
asfasdff 已提交
3005

G
ge-yafang 已提交
3006
```js
G
ge-yafang 已提交
3007 3008 3009 3010 3011 3012 3013 3014
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 已提交
3015
        }).catch((err) => {
G
ge-yafang 已提交
3016
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3017
        });
G
ge-yafang 已提交
3018 3019 3020 3021 3022 3023 3024
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3025

3026
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3027

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

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

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

G
ge-yafang 已提交
3034
**参数:**
A
asfasdff 已提交
3035

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

G
ge-yafang 已提交
3041
**示例:**
A
asfasdff 已提交
3042

G
ge-yafang 已提交
3043
```js
G
ge-yafang 已提交
3044 3045 3046 3047 3048 3049 3050 3051 3052 3053
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 已提交
3054 3055
            }
        }
G
ge-yafang 已提交
3056
        entries.push(entry);
A
asfasdff 已提交
3057
    }
G
ge-yafang 已提交
3058 3059
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
3060
        kvStore.getEntries('batch_test_number_key', function (err,entries) {
G
ge-yafang 已提交
3061
            console.log('getEntries success');
3062 3063
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3064 3065 3066 3067 3068 3069
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3070 3071


3072
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3073

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

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

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

G
ge-yafang 已提交
3080
**参数:**
A
asfasdff 已提交
3081

W
wangkai 已提交
3082
| 参数名  | 类型 | 必填  | 说明                    |
3083 3084
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3085

G
ge-yafang 已提交
3086
**返回值:**
A
asfasdff 已提交
3087

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

G
ge-yafang 已提交
3092
**示例:**
A
asfasdff 已提交
3093

G
ge-yafang 已提交
3094
```js
G
ge-yafang 已提交
3095 3096 3097 3098 3099 3100 3101 3102 3103 3104
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 已提交
3105 3106
            }
        }
G
ge-yafang 已提交
3107 3108 3109 3110 3111
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
3112
        kvStore.getEntries('batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
3113
            console.log('getEntries success');
3114 3115 3116 3117
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
            console.log('entries[0].value: ' + JSON.stringify(entries[0].value));
            console.log('entries[0].value.value: ' + entries[0].value.value);
A
asfasdff 已提交
3118
        }).catch((err) => {
G
ge-yafang 已提交
3119
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3120
        });
G
ge-yafang 已提交
3121 3122 3123 3124 3125 3126 3127
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3128 3129


3130
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3131

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

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

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

G
ge-yafang 已提交
3138
**参数:**
A
asfasdff 已提交
3139

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

G
ge-yafang 已提交
3145
**示例:**
A
asfasdff 已提交
3146

G
ge-yafang 已提交
3147
```js
G
ge-yafang 已提交
3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158
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 已提交
3159 3160
            }
        }
G
ge-yafang 已提交
3161
        entries.push(entry);
A
asfasdff 已提交
3162
    }
G
ge-yafang 已提交
3163 3164 3165 3166 3167
    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");
3168
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
3169
            console.log('getEntries success');
3170 3171
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3172 3173 3174 3175 3176 3177 3178
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3179 3180


3181
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3182

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

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

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

G
ge-yafang 已提交
3189
**参数:**
A
asfasdff 已提交
3190

W
wangkai 已提交
3191
| 参数名  | 类型 | 必填  | 说明                    |
3192
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3193
| query  |[Query](#query8)   | 是    |表示查询对象。  |
A
asfasdff 已提交
3194

G
ge-yafang 已提交
3195
**返回值:**
A
asfasdff 已提交
3196

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

G
ge-yafang 已提交
3201
**示例:**
A
asfasdff 已提交
3202

G
ge-yafang 已提交
3203
```js
W
wangkai 已提交
3204
let kvStore;
G
ge-yafang 已提交
3205 3206 3207 3208 3209 3210 3211 3212 3213 3214
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 已提交
3215 3216
            }
        }
G
ge-yafang 已提交
3217 3218 3219 3220 3221 3222 3223
        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");
3224
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
3225
            console.log('getEntries success');
A
asfasdff 已提交
3226
        }).catch((err) => {
G
ge-yafang 已提交
3227
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3228
        });
G
ge-yafang 已提交
3229 3230 3231 3232 3233 3234 3235 3236
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3237 3238


3239
### getResultSet<sup>8+</sup><a name="singlekvstore_getresultset"></a>
A
asfasdff 已提交
3240

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

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

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

G
ge-yafang 已提交
3247
**参数:**
A
asfasdff 已提交
3248

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

G
ge-yafang 已提交
3254
**示例:**
A
asfasdff 已提交
3255

G
ge-yafang 已提交
3256
```js
G
ge-yafang 已提交
3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267
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 已提交
3268 3269
            }
        }
G
ge-yafang 已提交
3270
        entries.push(entry);
A
asfasdff 已提交
3271
    }
G
ge-yafang 已提交
3272 3273
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
W
wangkai 已提交
3274
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
3275
            console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
3276 3277 3278 3279 3280 3281 3282 3283 3284 3285
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('GetResultSet closeResultSet success');
            })
        });
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3286 3287


3288
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3289

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

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

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

G
ge-yafang 已提交
3296
**参数:**
A
asfasdff 已提交
3297

W
wangkai 已提交
3298
| 参数名  | 类型 | 必填  | 说明                    |
3299 3300
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3301

G
ge-yafang 已提交
3302
**返回值:**
A
asfasdff 已提交
3303

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

G
ge-yafang 已提交
3308
**示例:**
A
asfasdff 已提交
3309

G
ge-yafang 已提交
3310
```js
G
ge-yafang 已提交
3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321
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 已提交
3322 3323
            }
        }
G
ge-yafang 已提交
3324
        entries.push(entry);
A
asfasdff 已提交
3325
    }
G
ge-yafang 已提交
3326 3327 3328 3329 3330 3331
    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 已提交
3332
        console.log('GetResult getResultSet succeed.');
G
ge-yafang 已提交
3333 3334
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3335
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3336 3337 3338 3339 3340 3341 3342 3343 3344 3345
    });
    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 已提交
3346 3347


3348
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3349

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

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

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

G
ge-yafang 已提交
3356
**参数:**
A
asfasdff 已提交
3357

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

G
ge-yafang 已提交
3363
**示例:**
A
asfasdff 已提交
3364

G
ge-yafang 已提交
3365
```js
G
ge-yafang 已提交
3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376
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 已提交
3377 3378
            }
        }
G
ge-yafang 已提交
3379
        entries.push(entry);
A
asfasdff 已提交
3380
    }
G
ge-yafang 已提交
3381 3382 3383 3384
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3385
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
3386
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3387 3388 3389 3390 3391 3392 3393
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3394 3395


3396
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3397

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

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

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

G
ge-yafang 已提交
3404
**参数:**
A
asfasdff 已提交
3405

W
wangkai 已提交
3406
| 参数名  | 类型 | 必填  | 说明                    |
3407
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3408
| query  |[Query](#query8)    | 是    |表示查询对象。             |
A
asfasdff 已提交
3409

G
ge-yafang 已提交
3410
**返回值:**
A
asfasdff 已提交
3411

3412 3413
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3414
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。获取与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
3415

G
ge-yafang 已提交
3416
**示例:**
A
asfasdff 已提交
3417

G
ge-yafang 已提交
3418
```js
G
ge-yafang 已提交
3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429
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 已提交
3430 3431
            }
        }
G
ge-yafang 已提交
3432
        entries.push(entry);
A
asfasdff 已提交
3433
    }
G
ge-yafang 已提交
3434 3435 3436 3437 3438 3439 3440 3441
    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 已提交
3442
        console.log(' getResultSet succeed.');
G
ge-yafang 已提交
3443 3444
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3445
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3446 3447 3448 3449 3450
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3451

3452
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
3453

3454
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3455

G
ge-yafang 已提交
3456
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3457

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

G
ge-yafang 已提交
3460
**参数:**
A
asfasdff 已提交
3461

W
wangkai 已提交
3462
| 参数名  | 类型 | 必填  | 说明                    |
3463
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3464 3465
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。             |
A
asfasdff 已提交
3466

G
ge-yafang 已提交
3467
**示例:**
A
asfasdff 已提交
3468

G
ge-yafang 已提交
3469
```js
G
ge-yafang 已提交
3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483
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 已提交
3484 3485


3486
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
3487

3488
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3489

G
ge-yafang 已提交
3490
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3491

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

G
ge-yafang 已提交
3494
**参数:**
A
asfasdff 已提交
3495

W
wangkai 已提交
3496
| 参数名  | 类型 | 必填  | 说明                    |
3497
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3498
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
A
asfasdff 已提交
3499

G
ge-yafang 已提交
3500
**返回值:**
A
asfasdff 已提交
3501

3502 3503
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3504
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3505

G
ge-yafang 已提交
3506
**示例:**
A
asfasdff 已提交
3507

G
ge-yafang 已提交
3508
```js
G
ge-yafang 已提交
3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520
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 已提交
3521 3522


3523
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
3524

3525
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3526

G
ge-yafang 已提交
3527
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
3528

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

G
ge-yafang 已提交
3531
**参数:**
A
asfasdff 已提交
3532

W
wangkai 已提交
3533
| 参数名  | 类型 | 必填  | 说明                    |
3534
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3535
| query  |[Query](#query8)   | 是    |表示查询对象。         |
G
ge-yafang 已提交
3536
| callback  |AsyncCallback&lt;number&gt;   | 是    |回调函数。返回与指定Query对象匹配的结果数。         |
A
asfasdff 已提交
3537

G
ge-yafang 已提交
3538
**示例:**
A
asfasdff 已提交
3539

G
ge-yafang 已提交
3540
```js
G
ge-yafang 已提交
3541 3542 3543 3544 3545 3546 3547 3548 3549 3550
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 已提交
3551 3552
            }
        }
G
ge-yafang 已提交
3553
        entries.push(entry);
A
asfasdff 已提交
3554
    }
G
ge-yafang 已提交
3555 3556 3557 3558
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3559
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
3560
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3561 3562 3563 3564 3565 3566
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3567 3568


3569
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
3570

3571
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3572

G
ge-yafang 已提交
3573
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
3574

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

G
ge-yafang 已提交
3577
**参数:**
A
asfasdff 已提交
3578

W
wangkai 已提交
3579
| 参数名  | 类型 | 必填  | 说明                    |
3580
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3581
| query  |[Query](#query8)   | 是    |表示查询对象。         |
A
asfasdff 已提交
3582

G
ge-yafang 已提交
3583
**返回值:**
A
asfasdff 已提交
3584

3585 3586
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3587
|Promise&lt;number&gt; |Promise对象。获取与指定Query对象匹配的结果数。|
A
asfasdff 已提交
3588

G
ge-yafang 已提交
3589
**示例:**
A
asfasdff 已提交
3590

G
ge-yafang 已提交
3591
```js
G
ge-yafang 已提交
3592 3593 3594 3595 3596 3597 3598 3599 3600 3601
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 已提交
3602 3603
            }
        }
G
ge-yafang 已提交
3604
        entries.push(entry);
A
asfasdff 已提交
3605
    }
G
ge-yafang 已提交
3606 3607 3608 3609 3610 3611 3612 3613
    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 已提交
3614
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
3615
    }).catch((err) => {
G
ge-yafang 已提交
3616
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3617 3618 3619 3620 3621
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3622 3623


3624
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
3625

3626
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3627

G
ge-yafang 已提交
3628
删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
3629

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

G
ge-yafang 已提交
3632
**参数:**
A
asfasdff 已提交
3633

W
wangkai 已提交
3634
| 参数名  | 类型 | 必填  | 说明                    |
3635 3636 3637
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3638

G
ge-yafang 已提交
3639
**示例:**
A
asfasdff 已提交
3640

G
ge-yafang 已提交
3641
```js
G
ge-yafang 已提交
3642 3643 3644 3645 3646 3647 3648
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 已提交
3649
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
3650 3651 3652 3653
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
3654
                kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
3655 3656 3657
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
3658
        });
G
ge-yafang 已提交
3659 3660 3661 3662 3663
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3664 3665


3666
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
3667

3668
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3669

G
ge-yafang 已提交
3670
删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
3671

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

G
ge-yafang 已提交
3674
**参数:**
A
asfasdff 已提交
3675

W
wangkai 已提交
3676
| 参数名  | 类型 | 必填  | 说明                    |
3677 3678
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3679

G
ge-yafang 已提交
3680
**返回值:**
A
asfasdff 已提交
3681

3682 3683
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3684
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3685

G
ge-yafang 已提交
3686
**示例:**
A
asfasdff 已提交
3687

G
ge-yafang 已提交
3688
```js
G
ge-yafang 已提交
3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712
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 已提交
3713 3714


3715
### on('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
3716

3717
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3718

3719
订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
3720

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

G
ge-yafang 已提交
3723
**参数:**
A
asfasdff 已提交
3724

W
wangkai 已提交
3725
| 参数名  | 类型 | 必填  | 说明                    |
3726
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3727
| event  |string   | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
3728
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 是    |回调函数。用于向调用方发送同步结果的回调。    |
A
asfasdff 已提交
3729

G
ge-yafang 已提交
3730
**示例:**
A
asfasdff 已提交
3731

G
ge-yafang 已提交
3732
```js
G
ge-yafang 已提交
3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748
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 已提交
3749 3750


3751
### off('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
3752

3753
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3754

3755
取消订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
3756

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

G
ge-yafang 已提交
3759
**参数:**
A
asfasdff 已提交
3760

W
wangkai 已提交
3761
| 参数名  | 类型 | 必填  | 说明                    |
3762
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3763
| event  |string   | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
3764
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 否    |回调函数。用于向调用方发送同步结果的回调。    |
3765

G
ge-yafang 已提交
3766
**示例:**
A
asfasdff 已提交
3767

G
ge-yafang 已提交
3768
```js
Z
zuojiangjiang 已提交
3769 3770
let kvStore;
class KvstoreModel {
3771 3772 3773 3774
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
3775 3776
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
3777 3778 3779
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
3780 3781
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
3782 3783
        }
    }
G
ge-yafang 已提交
3784 3785
}
```
A
asfasdff 已提交
3786

W
wangkai 已提交
3787 3788
### sync<sup>7+</sup>

A
asfasdff 已提交
3789

W
wangkai 已提交
3790
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
Z
zengyawen 已提交
3791

G
ge-yafang 已提交
3792
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
3793

Z
zuojiangjiang 已提交
3794
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
Z
zengyawen 已提交
3795

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

G
ge-yafang 已提交
3798
**参数:**
A
asfasdff 已提交
3799

W
wangkai 已提交
3800
| 参数名  | 类型 | 必填  | 说明                    |
3801
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
3802
| deviceIds  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
G
ge-yafang 已提交
3803
| mode  |[SyncMode](#syncmode)   | 是   |同步模式。    |
W
wangkai 已提交
3804
| delayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |
A
asfasdff 已提交
3805

G
ge-yafang 已提交
3806
**示例:**
A
asfasdff 已提交
3807

G
ge-yafang 已提交
3808
```js
G
ge-yafang 已提交
3809 3810 3811
let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
```
A
asfasdff 已提交
3812

3813
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
3814

3815
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3816

G
ge-yafang 已提交
3817
设置数据库同步允许的默认延迟,使用callback异步回调。
A
asfasdff 已提交
3818

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

G
ge-yafang 已提交
3821
**参数:**
A
asfasdff 已提交
3822

W
wangkai 已提交
3823
| 参数名  | 类型 | 必填  | 说明                    |
3824 3825 3826 3827
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |
| callback  |AsyncCallback&lt;void&gt;  | 是   |回调函数。   |

G
ge-yafang 已提交
3828
**示例:**
A
asfasdff 已提交
3829

G
ge-yafang 已提交
3830
```js
G
ge-yafang 已提交
3831 3832 3833 3834 3835 3836 3837 3838 3839 3840
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 已提交
3841 3842


3843
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
3844

3845
setSyncParam(defaultAllowedDelayMs: number): Promise&lt;void&gt;
A
asfasdff 已提交
3846

G
ge-yafang 已提交
3847
设置数据库同步允许的默认延迟,使用Promise异步回调。
A
asfasdff 已提交
3848

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

G
ge-yafang 已提交
3851
**参数:**
A
asfasdff 已提交
3852

W
wangkai 已提交
3853
| 参数名  | 类型 | 必填  | 说明                    |
3854 3855 3856
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |

A
asfasdff 已提交
3857

G
ge-yafang 已提交
3858
**返回值:**
A
asfasdff 已提交
3859

3860 3861
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3862
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3863

G
ge-yafang 已提交
3864
**示例:**
A
asfasdff 已提交
3865

G
ge-yafang 已提交
3866
```js
G
ge-yafang 已提交
3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878
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 已提交
3879 3880


3881
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
3882

3883
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
3884

G
ge-yafang 已提交
3885
获取数据库的安全级别,使用callback异步回调。
A
asfasdff 已提交
3886

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

G
ge-yafang 已提交
3889
**参数:**
A
asfasdff 已提交
3890

W
wangkai 已提交
3891
| 参数名  | 类型 | 必填  | 说明                    |
3892
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3893
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。返回数据库的安全级别。    |
A
asfasdff 已提交
3894

G
ge-yafang 已提交
3895
**示例:**
A
asfasdff 已提交
3896

G
ge-yafang 已提交
3897
```js
G
ge-yafang 已提交
3898 3899 3900 3901 3902 3903
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
3904
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
3905 3906
}
```
A
asfasdff 已提交
3907 3908


3909
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
3910

3911
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
3912

G
ge-yafang 已提交
3913
获取数据库的安全级别,使用Promise异步回调。
A
asfasdff 已提交
3914

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

G
ge-yafang 已提交
3917
**返回值:**
A
asfasdff 已提交
3918

3919 3920
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3921
|Promise&lt;[SecurityLevel](#securitylevel)&gt; |Promise对象。返回数据库的安全级别。|
3922

G
ge-yafang 已提交
3923
**示例:**
A
asfasdff 已提交
3924

G
ge-yafang 已提交
3925
```js
G
ge-yafang 已提交
3926 3927 3928 3929 3930 3931 3932 3933
let kvStore;
try {
    kvStore.getSecurityLevel().then((data) => {
        console.log(' getSecurityLevel success');
    }).catch((err) => {
        console.log('getSecurityLevel fail ' + JSON.stringify(err));
    });
}catch(e) {
3934
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
3935 3936
}
```
A
asfasdff 已提交
3937 3938


A
asfasdff 已提交
3939
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
3940

G
ge-yafang 已提交
3941 3942 3943 3944 3945 3946 3947
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。

比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。

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

3949
### get<sup>8+</sup>
A
asfasdff 已提交
3950

3951
get(deviceId: string, key: string, callback: AsyncCallback&lt;boolean|string|number|Uint8Array&gt;): void
A
asfasdff 已提交
3952

G
ge-yafang 已提交
3953
获取与指定设备ID和key匹配的string值,使用callback异步回调。
A
asfasdff 已提交
3954

G
ge-yafang 已提交
3955
**系统能力:**   SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
3956

G
ge-yafang 已提交
3957
**参数:**
A
asfasdff 已提交
3958

W
wangkai 已提交
3959
| 参数名  | 类型 | 必填  | 说明                    |
3960 3961
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
3962
| key       |string  | 是    |表示要查询key值的键。    |
G
ge-yafang 已提交
3963
| callback  |AsyncCallback&lt;boolean\|string\|number\|Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |
A
asfasdff 已提交
3964

G
ge-yafang 已提交
3965
**示例:**
A
asfasdff 已提交
3966

G
ge-yafang 已提交
3967
```js
G
ge-yafang 已提交
3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981
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 已提交
3982 3983


3984
### get<sup>8+</sup>
A
asfasdff 已提交
3985

3986
get(deviceId: string, key: string): Promise&lt;boolean|string|number|Uint8Array&gt;
A
asfasdff 已提交
3987

G
ge-yafang 已提交
3988
获取与指定设备ID和key匹配的string值,使用Promise异步回调。
A
asfasdff 已提交
3989

G
ge-yafang 已提交
3990
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
3991

G
ge-yafang 已提交
3992
**参数:**
A
asfasdff 已提交
3993

W
wangkai 已提交
3994
| 参数名  | 类型 | 必填  | 说明                    |
3995 3996
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
3997
| key       |string  | 是    |表示要查询key值的键。    |
A
asfasdff 已提交
3998

G
ge-yafang 已提交
3999
**返回值:**
A
asfasdff 已提交
4000

4001 4002
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4003
|Promise&lt;boolean\|string\|number\|Uint8Array&gt; |Promise对象。返回匹配给定条件的字符串值。|
A
asfasdff 已提交
4004

G
ge-yafang 已提交
4005
**示例:**
A
asfasdff 已提交
4006

G
ge-yafang 已提交
4007
```js
G
ge-yafang 已提交
4008 4009 4010 4011 4012 4013 4014 4015 4016 4017
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 已提交
4018
        });
G
ge-yafang 已提交
4019 4020 4021 4022 4023 4024 4025
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
4026 4027


4028
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4029

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

G
ge-yafang 已提交
4032
获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。
A
asfasdff 已提交
4033

G
ge-yafang 已提交
4034
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4035

G
ge-yafang 已提交
4036
**参数:**
A
asfasdff 已提交
4037

W
wangkai 已提交
4038
| 参数名  | 类型 | 必填  | 说明                    |
4039 4040 4041 4042
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是  |回调函数,返回满足给定条件的所有键值对的列表。    |
A
asfasdff 已提交
4043

G
ge-yafang 已提交
4044
**示例:**
A
asfasdff 已提交
4045

G
ge-yafang 已提交
4046
```js
G
ge-yafang 已提交
4047 4048 4049 4050 4051 4052 4053 4054 4055 4056
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 已提交
4057 4058
            }
        }
G
ge-yafang 已提交
4059
        entries.push(entry);
A
asfasdff 已提交
4060
    }
G
ge-yafang 已提交
4061 4062 4063
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
4064
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
4065
            console.log('getEntries success');
4066 4067
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4068 4069 4070 4071 4072 4073
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4074 4075


4076
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4077

4078
getEntries(deviceId: string, keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4079

G
ge-yafang 已提交
4080
获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
4081

G
ge-yafang 已提交
4082
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4083

G
ge-yafang 已提交
4084
**参数:**
A
asfasdff 已提交
4085

W
wangkai 已提交
4086
| 参数名  | 类型 | 必填  | 说明                    |
4087 4088 4089
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4090

G
ge-yafang 已提交
4091
**返回值:**
A
asfasdff 已提交
4092

4093 4094
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4095
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配给定条件的所有键值对的列表。|
A
asfasdff 已提交
4096

G
ge-yafang 已提交
4097
**示例:**
A
asfasdff 已提交
4098

G
ge-yafang 已提交
4099
```js
G
ge-yafang 已提交
4100 4101 4102 4103 4104 4105 4106 4107 4108 4109
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 已提交
4110 4111
            }
        }
G
ge-yafang 已提交
4112 4113 4114 4115 4116
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
4117
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
4118
            console.log('getEntries success');
4119
            console.log('entries.length: ' + entries.length);
4120
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
4121 4122
            console.log('entries[0].value: ' + JSON.stringify(entries[0].value));
            console.log('entries[0].value.value: ' + entries[0].value.value);
A
asfasdff 已提交
4123
        }).catch((err) => {
G
ge-yafang 已提交
4124
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4125
        });
G
ge-yafang 已提交
4126 4127 4128 4129 4130 4131 4132
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4133 4134


4135
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4136

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

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

G
ge-yafang 已提交
4141
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4142

G
ge-yafang 已提交
4143
**参数:**
A
asfasdff 已提交
4144

W
wangkai 已提交
4145
| 参数名  | 类型 | 必填  | 说明                    |
4146
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4147
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4148
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4149

G
ge-yafang 已提交
4150
**示例:**
A
asfasdff 已提交
4151

G
ge-yafang 已提交
4152
```js
G
ge-yafang 已提交
4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163
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 已提交
4164 4165
            }
        }
G
ge-yafang 已提交
4166
        entries.push(entry);
A
asfasdff 已提交
4167
    }
G
ge-yafang 已提交
4168 4169 4170 4171 4172 4173
    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');
4174
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
4175
            console.log('getEntries success');
4176 4177
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4178 4179 4180 4181 4182 4183 4184
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4185 4186


4187
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4188

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

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

G
ge-yafang 已提交
4193
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4194

G
ge-yafang 已提交
4195
**参数:**
A
asfasdff 已提交
4196

W
wangkai 已提交
4197
| 参数名  | 类型 | 必填  | 说明                    |
4198
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4199
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4200

G
ge-yafang 已提交
4201
**返回值:**
A
asfasdff 已提交
4202

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

G
ge-yafang 已提交
4207
**示例:**
A
asfasdff 已提交
4208

G
ge-yafang 已提交
4209
```js
G
ge-yafang 已提交
4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220
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 已提交
4221 4222
            }
        }
G
ge-yafang 已提交
4223 4224 4225 4226 4227 4228 4229
        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");
4230
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
4231
            console.log('getEntries success');
A
asfasdff 已提交
4232
        }).catch((err) => {
G
ge-yafang 已提交
4233
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4234
        });
G
ge-yafang 已提交
4235 4236 4237 4238 4239 4240 4241 4242
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4243 4244


4245
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4246

4247
getEntries(deviceId: string, query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4248

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

G
ge-yafang 已提交
4251
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4252

G
ge-yafang 已提交
4253
**参数:**
A
asfasdff 已提交
4254

W
wangkai 已提交
4255
| 参数名  | 类型 | 必填  | 说明                    |
4256 4257
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4258
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4259
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4260

G
ge-yafang 已提交
4261
**示例:**
A
asfasdff 已提交
4262

G
ge-yafang 已提交
4263
```js
G
ge-yafang 已提交
4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274
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 已提交
4275 4276
            }
        }
G
ge-yafang 已提交
4277
        entries.push(entry);
A
asfasdff 已提交
4278
    }
G
ge-yafang 已提交
4279 4280 4281 4282 4283 4284
    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");
4285
        kvStore.getEntries('localDeviceId', query, function (err,entries) {
G
ge-yafang 已提交
4286
            console.log('getEntries success');
4287 4288
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4289 4290 4291 4292 4293 4294 4295
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4296 4297


4298
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4299

4300
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4301

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

G
ge-yafang 已提交
4304
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4305

G
ge-yafang 已提交
4306
**参数:**
A
asfasdff 已提交
4307

W
wangkai 已提交
4308
| 参数名  | 类型 | 必填  | 说明                    |
4309 4310
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4311
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4312

G
ge-yafang 已提交
4313
**返回值:**
A
asfasdff 已提交
4314

4315 4316
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4317
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。|
A
asfasdff 已提交
4318

G
ge-yafang 已提交
4319
**示例:**
A
asfasdff 已提交
4320

G
ge-yafang 已提交
4321
```js
G
ge-yafang 已提交
4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332
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 已提交
4333 4334
            }
        }
G
ge-yafang 已提交
4335 4336 4337 4338 4339 4340 4341 4342
        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");
4343
        kvStore.getEntries('localDeviceId', query).then((entries) => {
G
ge-yafang 已提交
4344
            console.log('getEntries success');
A
asfasdff 已提交
4345
        }).catch((err) => {
G
ge-yafang 已提交
4346
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4347
        });
G
ge-yafang 已提交
4348 4349 4350 4351 4352 4353 4354 4355
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4356 4357


4358
### getResultSet<sup>8+</sup><a name="devicekvstore_getresultset"></a>
A
asfasdff 已提交
4359

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

G
ge-yafang 已提交
4362
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4363

G
ge-yafang 已提交
4364
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4365

G
ge-yafang 已提交
4366
**参数:**
A
asfasdff 已提交
4367

W
wangkai 已提交
4368
| 参数名  | 类型 | 必填  | 说明                    |
4369 4370 4371
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
G
ge-yafang 已提交
4372
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4373

G
ge-yafang 已提交
4374
**示例:**
A
asfasdff 已提交
4375

G
ge-yafang 已提交
4376
```js
G
ge-yafang 已提交
4377 4378 4379 4380
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
4381
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4382
        resultSet = result;
W
wangkai 已提交
4383
        kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4384 4385 4386 4387 4388 4389 4390
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4391 4392


4393
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4394

4395
getResultSet(deviceId: string, keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4396

G
ge-yafang 已提交
4397
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4398

G
ge-yafang 已提交
4399
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4400

G
ge-yafang 已提交
4401
**参数:**
A
asfasdff 已提交
4402

W
wangkai 已提交
4403
| 参数名  | 类型 | 必填  | 说明                    |
4404 4405 4406
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4407

G
ge-yafang 已提交
4408
**返回值:**
A
asfasdff 已提交
4409

4410 4411
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4412
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4413

G
ge-yafang 已提交
4414
**示例:**
A
asfasdff 已提交
4415

G
ge-yafang 已提交
4416
```js
G
ge-yafang 已提交
4417 4418 4419 4420
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
G
ge-yafang 已提交
4421
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4422 4423
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4424
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4425 4426 4427 4428 4429 4430 4431 4432 4433 4434
    });
    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 已提交
4435 4436


4437
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4438

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

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

G
ge-yafang 已提交
4443
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4444

G
ge-yafang 已提交
4445
**参数:**
A
asfasdff 已提交
4446

W
wangkai 已提交
4447
| 参数名  | 类型 | 必填  | 说明                    |
4448
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4449
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4450
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4451

G
ge-yafang 已提交
4452
**示例:**
A
asfasdff 已提交
4453

G
ge-yafang 已提交
4454
```js
G
ge-yafang 已提交
4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465
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 已提交
4466 4467
            }
        }
G
ge-yafang 已提交
4468
        entries.push(entry);
A
asfasdff 已提交
4469
    }
G
ge-yafang 已提交
4470 4471 4472 4473 4474
    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 已提交
4475
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
4476
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4477
            resultSet = result;
W
wangkai 已提交
4478
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4479 4480 4481 4482 4483 4484 4485 4486
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4487 4488


4489
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4490

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

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

G
ge-yafang 已提交
4495
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4496

G
ge-yafang 已提交
4497
**参数:**
A
asfasdff 已提交
4498

W
wangkai 已提交
4499
| 参数名  | 类型 | 必填  | 说明                    |
4500
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4501
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4502

G
ge-yafang 已提交
4503
**返回值:**
A
asfasdff 已提交
4504

4505 4506
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4507
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4508

G
ge-yafang 已提交
4509
**示例:**
A
asfasdff 已提交
4510

G
ge-yafang 已提交
4511
```js
G
ge-yafang 已提交
4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522
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 已提交
4523 4524
            }
        }
G
ge-yafang 已提交
4525
        entries.push(entry);
A
asfasdff 已提交
4526
    }
G
ge-yafang 已提交
4527 4528 4529 4530 4531 4532 4533 4534 4535 4536
    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 已提交
4537
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4538 4539
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4540
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4541 4542 4543 4544 4545 4546 4547 4548 4549 4550
    });
    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 已提交
4551 4552


4553
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4554

4555
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4556

G
ge-yafang 已提交
4557
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4558

G
ge-yafang 已提交
4559
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4560

G
ge-yafang 已提交
4561
**参数:**
A
asfasdff 已提交
4562

W
wangkai 已提交
4563
| 参数名  | 类型 | 必填  | 说明                    |
4564 4565
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4566
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4567
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4568

G
ge-yafang 已提交
4569
**示例:**
A
asfasdff 已提交
4570

G
ge-yafang 已提交
4571
```js
G
ge-yafang 已提交
4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582
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 已提交
4583 4584
            }
        }
G
ge-yafang 已提交
4585
        entries.push(entry);
A
asfasdff 已提交
4586
    }
G
ge-yafang 已提交
4587 4588 4589 4590
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4591
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
G
ge-yafang 已提交
4592
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4593
            resultSet = result;
W
wangkai 已提交
4594
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4595 4596 4597 4598 4599 4600 4601 4602
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4603 4604


4605
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4606

4607
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4608

G
ge-yafang 已提交
4609
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4610

G
ge-yafang 已提交
4611
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4612

G
ge-yafang 已提交
4613
**参数:**
A
asfasdff 已提交
4614

W
wangkai 已提交
4615
| 参数名  | 类型 | 必填  | 说明                    |
4616 4617
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4618
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4619

G
ge-yafang 已提交
4620
**返回值:**
A
asfasdff 已提交
4621

4622 4623
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4624
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4625

G
ge-yafang 已提交
4626
**示例:**
A
asfasdff 已提交
4627

G
ge-yafang 已提交
4628
```js
G
ge-yafang 已提交
4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639
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 已提交
4640 4641
            }
        }
G
ge-yafang 已提交
4642
        entries.push(entry);
A
asfasdff 已提交
4643
    }
G
ge-yafang 已提交
4644 4645 4646 4647 4648 4649 4650 4651
    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 已提交
4652
        console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
4653 4654
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4655
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668
    });
    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 已提交
4669 4670


4671
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4672

4673
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4674

G
ge-yafang 已提交
4675
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4676

G
ge-yafang 已提交
4677
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4678

G
ge-yafang 已提交
4679
**参数:**
A
asfasdff 已提交
4680

W
wangkai 已提交
4681
| 参数名  | 类型 | 必填  | 说明                    |
4682
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4683
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
4684
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
4685

G
ge-yafang 已提交
4686
**示例:**
A
asfasdff 已提交
4687

G
ge-yafang 已提交
4688
```js
G
ge-yafang 已提交
4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703
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 已提交
4704 4705


4706
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4707

4708
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
4709

G
ge-yafang 已提交
4710
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4711

G
ge-yafang 已提交
4712
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4713

G
ge-yafang 已提交
4714
**参数:**
A
asfasdff 已提交
4715

W
wangkai 已提交
4716
| 参数名  | 类型 | 必填  | 说明                    |
4717
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4718
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
A
asfasdff 已提交
4719

G
ge-yafang 已提交
4720
**返回值:**
A
asfasdff 已提交
4721

4722 4723
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4724
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4725

G
ge-yafang 已提交
4726
**示例:**
A
asfasdff 已提交
4727

G
ge-yafang 已提交
4728
```js
G
ge-yafang 已提交
4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741
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 已提交
4742 4743


4744
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4745

4746
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
4747

G
ge-yafang 已提交
4748
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4749

G
ge-yafang 已提交
4750
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4751

G
ge-yafang 已提交
4752
**参数:**
A
asfasdff 已提交
4753

W
wangkai 已提交
4754
| 参数名  | 类型 | 必填  | 说明                    |
4755
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4756
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4757
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定Query对象匹配的结果数。    |
A
asfasdff 已提交
4758

G
ge-yafang 已提交
4759
**示例:**
A
asfasdff 已提交
4760

G
ge-yafang 已提交
4761
```js
G
ge-yafang 已提交
4762 4763 4764 4765 4766 4767 4768 4769 4770 4771
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 已提交
4772 4773
            }
        }
G
ge-yafang 已提交
4774
        entries.push(entry);
A
asfasdff 已提交
4775
    }
G
ge-yafang 已提交
4776 4777 4778 4779 4780
    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 已提交
4781
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
4782
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4783 4784 4785 4786 4787 4788
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4789 4790


4791
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4792

4793
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4794

G
ge-yafang 已提交
4795
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
4796

G
ge-yafang 已提交
4797
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4798

G
ge-yafang 已提交
4799
**参数:**
A
asfasdff 已提交
4800

W
wangkai 已提交
4801
| 参数名  | 类型 | 必填  | 说明                    |
4802
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4803
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4804

G
ge-yafang 已提交
4805
**返回值:**
A
asfasdff 已提交
4806

4807 4808
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4809
|Promise&lt;number&gt; |Promise对象。返回与指定Query对象匹配的结果数。|
A
asfasdff 已提交
4810

G
ge-yafang 已提交
4811
**示例:**
A
asfasdff 已提交
4812

G
ge-yafang 已提交
4813
```js
G
ge-yafang 已提交
4814 4815 4816 4817 4818 4819 4820 4821 4822 4823
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 已提交
4824 4825
            }
        }
G
ge-yafang 已提交
4826
        entries.push(entry);
A
asfasdff 已提交
4827
    }
G
ge-yafang 已提交
4828 4829 4830 4831 4832 4833 4834 4835 4836
    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 已提交
4837
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4838
    }).catch((err) => {
G
ge-yafang 已提交
4839
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4840 4841 4842 4843 4844
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4845 4846


4847
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4848

A
asfasdff 已提交
4849
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
4850

G
ge-yafang 已提交
4851
获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4852

G
ge-yafang 已提交
4853
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4854

G
ge-yafang 已提交
4855
**参数:**
A
asfasdff 已提交
4856

W
wangkai 已提交
4857
| 参数名  | 类型 | 必填  | 说明                    |
4858 4859
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4860
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4861
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的结果数。    |
A
asfasdff 已提交
4862

G
ge-yafang 已提交
4863
**示例:**
A
asfasdff 已提交
4864

G
ge-yafang 已提交
4865
```js
G
ge-yafang 已提交
4866 4867 4868 4869 4870 4871 4872 4873 4874 4875
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 已提交
4876 4877
            }
        }
G
ge-yafang 已提交
4878
        entries.push(entry);
A
asfasdff 已提交
4879
    }
G
ge-yafang 已提交
4880 4881 4882 4883
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4884
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
G
ge-yafang 已提交
4885
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4886 4887 4888 4889 4890 4891
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4892 4893


4894
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4895

4896
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4897

G
ge-yafang 已提交
4898
获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
4899

G
ge-yafang 已提交
4900
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4901

G
ge-yafang 已提交
4902
**参数:**
A
asfasdff 已提交
4903

W
wangkai 已提交
4904
| 参数名  | 类型 | 必填  | 说明                    |
4905 4906
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4907
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4908

G
ge-yafang 已提交
4909
**返回值:**
A
asfasdff 已提交
4910

4911 4912
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4913
|Promise&lt;number&gt; |Promise对象。返回与指定设备ID和Query对象匹配的结果数。|
A
asfasdff 已提交
4914

G
ge-yafang 已提交
4915
**示例:**
A
asfasdff 已提交
4916

G
ge-yafang 已提交
4917
```js
G
ge-yafang 已提交
4918 4919 4920 4921 4922 4923 4924 4925 4926 4927
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 已提交
4928 4929
            }
        }
G
ge-yafang 已提交
4930
        entries.push(entry);
A
asfasdff 已提交
4931
    }
G
ge-yafang 已提交
4932 4933 4934 4935 4936 4937 4938 4939
    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 已提交
4940
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4941
    }).catch((err) => {
G
ge-yafang 已提交
4942
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4943 4944 4945 4946 4947
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4948 4949


4950
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
4951

4952
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4953

G
ge-yafang 已提交
4954
从当前数据库中删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
4955

G
ge-yafang 已提交
4956
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4957

G
ge-yafang 已提交
4958
**参数:**
A
asfasdff 已提交
4959

W
wangkai 已提交
4960
| 参数名  | 类型 | 必填  | 说明                    |
4961 4962 4963
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
4964

G
ge-yafang 已提交
4965
**示例:**
A
asfasdff 已提交
4966

G
ge-yafang 已提交
4967
```js
G
ge-yafang 已提交
4968 4969 4970 4971 4972 4973 4974
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 已提交
4975
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
4976 4977 4978 4979
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
4980
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
4981 4982 4983
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
4984
        });
G
ge-yafang 已提交
4985 4986 4987 4988 4989
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
4990 4991


4992
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
4993

4994
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
4995

G
ge-yafang 已提交
4996
从当前数据库中删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
4997

G
ge-yafang 已提交
4998
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4999

G
ge-yafang 已提交
5000
**参数:**
A
asfasdff 已提交
5001

W
wangkai 已提交
5002
| 参数名  | 类型 | 必填  | 说明                    |
5003 5004
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
5005

G
ge-yafang 已提交
5006
**返回值:**
A
asfasdff 已提交
5007

5008 5009
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5010
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5011

G
ge-yafang 已提交
5012
**示例:**
A
asfasdff 已提交
5013

G
ge-yafang 已提交
5014
```js
G
ge-yafang 已提交
5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038
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 已提交
5039 5040


5041
### sync<sup>8+</sup>
A
asfasdff 已提交
5042

W
wangkai 已提交
5043
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
A
asfasdff 已提交
5044

G
ge-yafang 已提交
5045
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
5046

Z
zuojiangjiang 已提交
5047
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
A
asfasdff 已提交
5048

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

G
ge-yafang 已提交
5051
**参数:**
A
asfasdff 已提交
5052

W
wangkai 已提交
5053
| 参数名  | 类型 | 必填  | 说明                    |
5054
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
5055
| deviceIds    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
G
ge-yafang 已提交
5056
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
W
wangkai 已提交
5057
| delayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |
5058

G
ge-yafang 已提交
5059
**示例:**
A
asfasdff 已提交
5060

G
ge-yafang 已提交
5061
```js
G
ge-yafang 已提交
5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078
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 已提交
5079

5080
### on('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
5081

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

5084
订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
5085

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

G
ge-yafang 已提交
5088
**参数:**
A
asfasdff 已提交
5089

W
wangkai 已提交
5090
| 参数名  | 类型 | 必填  | 说明                    |
5091
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5092
| event    |string      | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5093
| syncCallback            |Callback<Array&lt;[string, number]&gt;> | 是    |回调函数。用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5094

G
ge-yafang 已提交
5095
**示例:**
Z
zengyawen 已提交
5096

G
ge-yafang 已提交
5097
```js
W
wangkai 已提交
5098
let kvStore;
G
ge-yafang 已提交
5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113
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 已提交
5114 5115


5116
### off('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
5117

5118
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5119

5120
取消订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
5121

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

G
ge-yafang 已提交
5124
**参数:**
A
asfasdff 已提交
5125

W
wangkai 已提交
5126
| 参数名  | 类型 | 必填  | 说明                    |
5127
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5128
| event         |string                           | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5129
| syncCallback  |Callback<Array&lt;[string, number]&gt;&gt; | 否    |回调函数。用于向调用方发送同步结果的回调。  |
5130

G
ge-yafang 已提交
5131
**示例:**
A
asfasdff 已提交
5132

G
ge-yafang 已提交
5133
```js
Z
zuojiangjiang 已提交
5134 5135
let kvStore;
class KvstoreModel {
5136 5137 5138 5139
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
5140 5141
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
5142 5143 5144
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
5145 5146
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
5147 5148
        }
    }
G
ge-yafang 已提交
5149 5150
}
```
A
asfasdff 已提交
5151

5152
## SyncMode
Z
zengyawen 已提交
5153

G
ge-yafang 已提交
5154
同步模式枚举。
Z
zengyawen 已提交
5155

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

G
ge-yafang 已提交
5158
| 名称       | 值     | 说明                    |
5159 5160
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
G
ge-yafang 已提交
5161
| PUSH_ONLY  |1          |表示只能从本端推送数据到远端。 |
5162
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |