js-apis-distributed-data.md 157.4 KB
Newer Older
1
# @ohos.data.distributedData (分布式数据管理)
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实例的配置信息,包括调用方的Bundle名称和用户信息。 |
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
提供KVManager实例的配置信息,包括调用方的Bundle名称和用户信息。
Z
zengyawen 已提交
116

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

Y
xiugaii  
ylq121 已提交
119 120 121
| 名称 | 类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
122
| bundleName | string | 是  | 调用方的Bundle名称。 |
123 124

## UserInfo
Z
zengyawen 已提交
125 126 127

用户信息。

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

Y
xiugaii  
ylq121 已提交
130 131 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实例的配置信息。 |
W
wangkai 已提交
165
| callback | AsyncCallback&lt;T&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

Y
xiugai  
ylq121 已提交
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

Y
xiugai  
ylq121 已提交
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

Y
xiugaii  
ylq121 已提交
576 577 578 579 580
| 名称  | 类型 | 必填   | 说明                    |
| -----  | ------  | ------  | -------------------|
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
W
wangkai 已提交
581
| autoSync  | boolean | 否 |设置数据库文件是否自动同步。默认为false,即手动同步;设置为ture时,表示自动同步。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC     |
Y
xiugaii  
ylq121 已提交
582 583 584
| 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
| ---   | ----  | ----------------------- |
W
wangkai 已提交
594 595
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。<br> **数据库特点:** 数据以设备的维度管理,不存在冲突;支持按照设备的维度查询数据。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。<br> **数据库特点:** 数据不分设备,设备之间修改相同的key会覆盖。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
W
wangkai 已提交
596
| 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

Y
xiugai  
ylq121 已提交
2237
订阅指定类型的数据变更通知。
Z
zengyawen 已提交
2238

Y
xiugai  
ylq121 已提交
2239
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2240

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

Y
xiugai  
ylq121 已提交
2243 2244 2245 2246 2247
| 参数名   | 类型                                                      | 必填 | 说明                                                 |
| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------- |
| event    | string                                                    | 是   | 订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type     | [SubscribeType](#subscribetype)                           | 是   | 表示订阅的类型。                                     |
| 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

Y
xiugai  
ylq121 已提交
2262
订阅同步完成事件回调通知。
Z
zengyawen 已提交
2263

Y
xiugai  
ylq121 已提交
2264
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2265

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

Y
xiugai  
ylq121 已提交
2268 2269 2270 2271
| 参数名       | 类型                                          | 必填 | 说明                                                   |
| ------------ | --------------------------------------------- | ---- | ------------------------------------------------------ |
| event        | string                                        | 是   | 订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| 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

Y
xiugai  
ylq121 已提交
2286
取消订阅数据变更通知。
A
asfasdff 已提交
2287

Y
xiugai  
ylq121 已提交
2288
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
2289

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

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


A
asfasdff 已提交
2298

G
ge-yafang 已提交
2299
**示例:**
A
asfasdff 已提交
2300

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

Y
xiugai  
ylq121 已提交
2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355
### off('syncComplete')<sup>8+</sup>

off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void

取消订阅同步完成事件回调通知。

**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名       | 类型                                          | 必填 | 说明                                                       |
| ------------ | --------------------------------------------- | ---- | ---------------------------------------------------------- |
| event        | string                                        | 是   | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback | Callback&lt;Array&lt;[string, number]&gt;&gt; | 否   | 回调函数。用于向调用方发送同步结果的回调。                 |

**示例:**

```js
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}
```

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

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

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

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

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

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

G
ge-yafang 已提交
2371
**示例:**
A
asfasdff 已提交
2372

G
ge-yafang 已提交
2373
```js
G
ge-yafang 已提交
2374 2375 2376 2377 2378 2379 2380 2381 2382 2383
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 已提交
2384 2385
            }
        }
G
ge-yafang 已提交
2386
        entries.push(entry);
A
asfasdff 已提交
2387
    }
G
ge-yafang 已提交
2388 2389 2390
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
2391
        kvStore.getEntries('batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
2392
            console.log('getEntries success');
2393 2394
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
2395 2396 2397
        });
    });
}catch(e) {
G
ge-yafang 已提交
2398
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2399 2400
}
```
A
asfasdff 已提交
2401 2402


2403
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2404

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

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

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

G
ge-yafang 已提交
2411
**参数:**
A
asfasdff 已提交
2412

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

G
ge-yafang 已提交
2417
**返回值:**
A
asfasdff 已提交
2418

2419 2420
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2421
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2422

G
ge-yafang 已提交
2423
**示例:**
A
asfasdff 已提交
2424

G
ge-yafang 已提交
2425
```js
G
ge-yafang 已提交
2426 2427 2428 2429 2430 2431 2432 2433 2434 2435
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 已提交
2436
            }
Q
qing 已提交
2437 2438 2439 2440 2441
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
W
wangkai 已提交
2442
        console.log('putBatch success');
Q
qing 已提交
2443 2444 2445 2446 2447 2448
        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 已提交
2449 2450 2451 2452 2453 2454 2455
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + JSON.stringify(e));
}
```
A
asfasdff 已提交
2456

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

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

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

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

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

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

G
ge-yafang 已提交
2472
**示例:**
A
asfasdff 已提交
2473

G
ge-yafang 已提交
2474
```js
G
ge-yafang 已提交
2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485
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 已提交
2486 2487
            }
        }
G
ge-yafang 已提交
2488 2489
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2490
    }
G
ge-yafang 已提交
2491 2492 2493
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2494
        kvStore.deleteBatch(keys, async function (err,data) {
G
ge-yafang 已提交
2495 2496 2497 2498 2499 2500 2501
            console.log('deleteBatch success');
        });
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2502 2503


2504
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2505

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

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

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

G
ge-yafang 已提交
2512
**参数:**
A
asfasdff 已提交
2513

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

G
ge-yafang 已提交
2518
**返回值:**
A
asfasdff 已提交
2519

2520 2521
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2522
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2523

G
ge-yafang 已提交
2524
**示例:**
A
asfasdff 已提交
2525

G
ge-yafang 已提交
2526
```js
G
ge-yafang 已提交
2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537
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 已提交
2538 2539
            }
        }
G
ge-yafang 已提交
2540 2541 2542 2543 2544 2545
        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 已提交
2546
        kvStore.deleteBatch(keys).then((err) => {
G
ge-yafang 已提交
2547
            console.log('deleteBatch success');
A
asfasdff 已提交
2548
        }).catch((err) => {
G
ge-yafang 已提交
2549
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2550
        });
G
ge-yafang 已提交
2551 2552 2553 2554 2555 2556 2557
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2558 2559


2560
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
2561

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

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

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

G
ge-yafang 已提交
2568
**参数:**
A
asfasdff 已提交
2569

W
wangkai 已提交
2570
| 参数名  | 类型 | 必填  | 说明                    |
2571 2572
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2573

G
ge-yafang 已提交
2574
**示例:**
A
asfasdff 已提交
2575

G
ge-yafang 已提交
2576
```js
G
ge-yafang 已提交
2577 2578 2579 2580 2581 2582 2583 2584 2585
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 已提交
2586 2587
            }
        }
G
ge-yafang 已提交
2588
        entries.push(entry);
A
asfasdff 已提交
2589
    }
G
ge-yafang 已提交
2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601
    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 已提交
2602
        kvStore.putBatch(entries, async function (err,data) {
G
ge-yafang 已提交
2603
            console.log('putBatch success');
A
asfasdff 已提交
2604
        });
G
ge-yafang 已提交
2605 2606 2607 2608 2609
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2610 2611


2612
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
2613

2614
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2615

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

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

G
ge-yafang 已提交
2620
**返回值:**
A
asfasdff 已提交
2621

2622 2623
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2624
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2625

G
ge-yafang 已提交
2626
**示例:**
A
asfasdff 已提交
2627

G
ge-yafang 已提交
2628
```js
G
ge-yafang 已提交
2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644
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 已提交
2645 2646


2647
### commit<sup>8+</sup>
A
asfasdff 已提交
2648

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

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

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

G
ge-yafang 已提交
2655
**参数:**
A
asfasdff 已提交
2656

W
wangkai 已提交
2657
| 参数名  | 类型 | 必填  | 说明                    |
2658 2659
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2660

G
ge-yafang 已提交
2661
**示例:**
A
asfasdff 已提交
2662

G
ge-yafang 已提交
2663
```js
G
ge-yafang 已提交
2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676
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 已提交
2677 2678


2679
### commit<sup>8+</sup>
A
asfasdff 已提交
2680

2681
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2682

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

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

G
ge-yafang 已提交
2687
**返回值:**
A
asfasdff 已提交
2688

2689 2690
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2691
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2692

G
ge-yafang 已提交
2693
**示例:**
A
asfasdff 已提交
2694

G
ge-yafang 已提交
2695
```js
G
ge-yafang 已提交
2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706
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 已提交
2707 2708


2709
### rollback<sup>8+</sup>
A
asfasdff 已提交
2710

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

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

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

G
ge-yafang 已提交
2717
**参数:**
A
asfasdff 已提交
2718

W
wangkai 已提交
2719
| 参数名  | 类型 | 必填  | 说明                    |
2720 2721
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2722

G
ge-yafang 已提交
2723
**示例:**
A
asfasdff 已提交
2724

G
ge-yafang 已提交
2725
```js
G
ge-yafang 已提交
2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738
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 已提交
2739 2740


2741
### rollback<sup>8+</sup>
A
asfasdff 已提交
2742

2743
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2744

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

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

G
ge-yafang 已提交
2749
**返回值:**
A
asfasdff 已提交
2750

2751 2752
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2753
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2754

G
ge-yafang 已提交
2755
**示例:**
A
asfasdff 已提交
2756

G
ge-yafang 已提交
2757
```js
G
ge-yafang 已提交
2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768
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 已提交
2769 2770


2771
### enableSync<sup>8+</sup>
A
asfasdff 已提交
2772

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

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

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

G
ge-yafang 已提交
2779
**参数:**
A
asfasdff 已提交
2780

W
wangkai 已提交
2781
| 参数名  | 类型 | 必填  | 说明                    |
2782
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2783
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
2784
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
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 2800 2801
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 已提交
2802 2803


2804
### enableSync<sup>8+</sup>
A
asfasdff 已提交
2805

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

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

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

G
ge-yafang 已提交
2812
**参数:**
A
asfasdff 已提交
2813

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

G
ge-yafang 已提交
2818
**返回值:**
A
asfasdff 已提交
2819

2820 2821
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2822
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2823

G
ge-yafang 已提交
2824
**示例:**
A
asfasdff 已提交
2825

G
ge-yafang 已提交
2826
```js
G
ge-yafang 已提交
2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837
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 已提交
2838 2839


2840
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
2841

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

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

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

G
ge-yafang 已提交
2848
**参数:**
A
asfasdff 已提交
2849

W
wangkai 已提交
2850
| 参数名  | 类型 | 必填  | 说明                    |
2851 2852 2853 2854
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
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
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 已提交
2870 2871


2872
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
2873

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

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

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

G
ge-yafang 已提交
2880
**参数:**
A
asfasdff 已提交
2881

W
wangkai 已提交
2882
| 参数名  | 类型 | 必填  | 说明                    |
2883 2884 2885 2886
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
2887

G
ge-yafang 已提交
2888
**返回值:**
A
asfasdff 已提交
2889

2890 2891
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2892
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2893

G
ge-yafang 已提交
2894
**示例:**
A
asfasdff 已提交
2895

G
ge-yafang 已提交
2896
```js
G
ge-yafang 已提交
2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909
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 已提交
2910 2911


2912
## SubscribeType
Z
zengyawen 已提交
2913

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

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

G
ge-yafang 已提交
2918
| 名称  | 值   | 说明                    |
2919 2920 2921 2922 2923 2924
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
2925 2926 2927

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

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

Y
xiugai4  
ylq121 已提交
2930 2931 2932 2933 2934 2935
| 名称  | 类型   |必填   | 说明                    |
| ----- | -------   | ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是 |数据删除记录。   |
| deviceId | string   | 是 |设备ID,此处为设备UUID。  |
2936 2937

## Entry
Z
zengyawen 已提交
2938 2939 2940

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

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

Y
xiugai4  
ylq121 已提交
2943 2944 2945 2946
| 名称  | 类型   |必填   | 说明                    |
| ----- | -------   | ------|------------------------ |
| key | string   | 是 |键值。   |
| value | [Value](#value) | 是 |值对象。   |
2947 2948 2949


## Value
Z
zengyawen 已提交
2950

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

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

Y
xiugai4  
ylq121 已提交
2955 2956 2957 2958
| 名称  | 类型   |必填   | 说明                    |
| ----- | -------   | ------|------------------------ |
| type | [ValueType](#value)   | 是 |值类型。   |
| value | Uint8Array \| string \| number \| boolean| 是 |值。   |
2959 2960

## ValueType
Z
zengyawen 已提交
2961

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

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

G
ge-yafang 已提交
2966
| 名称  | 值   | 说明                    |
2967 2968 2969 2970 2971 2972 2973 2974 2975
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
2976

G
ge-yafang 已提交
2977 2978 2979 2980 2981
单版本数据库,继承自[KVStore](#kvstore)数据库,提供查询数据和同步数据的方法。

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

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

2983
### get
Z
zengyawen 已提交
2984

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

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

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

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

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

G
ge-yafang 已提交
2998
**示例:**
A
asfasdff 已提交
2999

G
ge-yafang 已提交
3000
```js
G
ge-yafang 已提交
3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012
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 已提交
3013
        });
G
ge-yafang 已提交
3014 3015 3016 3017 3018
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3019 3020


3021
### get
A
asfasdff 已提交
3022

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

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

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

G
ge-yafang 已提交
3029
**参数:**
A
asfasdff 已提交
3030

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

A
asfasdff 已提交
3035

G
ge-yafang 已提交
3036
**返回值:**
A
asfasdff 已提交
3037

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

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

G
ge-yafang 已提交
3044
```js
G
ge-yafang 已提交
3045 3046 3047 3048 3049 3050 3051 3052
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 已提交
3053
        }).catch((err) => {
G
ge-yafang 已提交
3054
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3055
        });
G
ge-yafang 已提交
3056 3057 3058 3059 3060 3061 3062
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3063

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

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

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

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

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

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

G
ge-yafang 已提交
3079
**示例:**
A
asfasdff 已提交
3080

G
ge-yafang 已提交
3081
```js
G
ge-yafang 已提交
3082 3083 3084 3085 3086 3087 3088 3089 3090 3091
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 已提交
3092 3093
            }
        }
G
ge-yafang 已提交
3094
        entries.push(entry);
A
asfasdff 已提交
3095
    }
G
ge-yafang 已提交
3096 3097
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
3098
        kvStore.getEntries('batch_test_number_key', function (err,entries) {
G
ge-yafang 已提交
3099
            console.log('getEntries success');
3100 3101
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3102 3103 3104 3105 3106 3107
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3108 3109


3110
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3111

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

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

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

G
ge-yafang 已提交
3118
**参数:**
A
asfasdff 已提交
3119

W
wangkai 已提交
3120
| 参数名  | 类型 | 必填  | 说明                    |
3121 3122
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3123

G
ge-yafang 已提交
3124
**返回值:**
A
asfasdff 已提交
3125

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

G
ge-yafang 已提交
3130
**示例:**
A
asfasdff 已提交
3131

G
ge-yafang 已提交
3132
```js
G
ge-yafang 已提交
3133 3134 3135 3136 3137 3138 3139 3140 3141 3142
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 已提交
3143 3144
            }
        }
G
ge-yafang 已提交
3145 3146 3147 3148 3149
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
3150
        kvStore.getEntries('batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
3151
            console.log('getEntries success');
3152 3153 3154 3155
            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 已提交
3156
        }).catch((err) => {
G
ge-yafang 已提交
3157
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3158
        });
G
ge-yafang 已提交
3159 3160 3161 3162 3163 3164 3165
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3166 3167


3168
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3169

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

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

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

G
ge-yafang 已提交
3176
**参数:**
A
asfasdff 已提交
3177

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

G
ge-yafang 已提交
3183
**示例:**
A
asfasdff 已提交
3184

G
ge-yafang 已提交
3185
```js
G
ge-yafang 已提交
3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196
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 已提交
3197 3198
            }
        }
G
ge-yafang 已提交
3199
        entries.push(entry);
A
asfasdff 已提交
3200
    }
G
ge-yafang 已提交
3201 3202 3203 3204 3205
    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");
3206
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
3207
            console.log('getEntries success');
3208 3209
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3210 3211 3212 3213 3214 3215 3216
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3217 3218


3219
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3220

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

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

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

G
ge-yafang 已提交
3227
**参数:**
A
asfasdff 已提交
3228

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

G
ge-yafang 已提交
3233
**返回值:**
A
asfasdff 已提交
3234

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

G
ge-yafang 已提交
3239
**示例:**
A
asfasdff 已提交
3240

G
ge-yafang 已提交
3241
```js
W
wangkai 已提交
3242
let kvStore;
G
ge-yafang 已提交
3243 3244 3245 3246 3247 3248 3249 3250 3251 3252
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 已提交
3253 3254
            }
        }
G
ge-yafang 已提交
3255 3256 3257 3258 3259 3260 3261
        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");
3262
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
3263
            console.log('getEntries success');
A
asfasdff 已提交
3264
        }).catch((err) => {
G
ge-yafang 已提交
3265
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3266
        });
G
ge-yafang 已提交
3267 3268 3269 3270 3271 3272 3273 3274
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3275 3276


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

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

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

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

G
ge-yafang 已提交
3285
**参数:**
A
asfasdff 已提交
3286

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

G
ge-yafang 已提交
3292
**示例:**
A
asfasdff 已提交
3293

G
ge-yafang 已提交
3294
```js
G
ge-yafang 已提交
3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305
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 已提交
3306 3307
            }
        }
G
ge-yafang 已提交
3308
        entries.push(entry);
A
asfasdff 已提交
3309
    }
G
ge-yafang 已提交
3310 3311
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
W
wangkai 已提交
3312
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
3313
            console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
3314 3315 3316 3317 3318 3319 3320 3321 3322 3323
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('GetResultSet closeResultSet success');
            })
        });
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3324 3325


3326
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3327

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

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

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

G
ge-yafang 已提交
3334
**参数:**
A
asfasdff 已提交
3335

W
wangkai 已提交
3336
| 参数名  | 类型 | 必填  | 说明                    |
3337 3338
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3339

G
ge-yafang 已提交
3340
**返回值:**
A
asfasdff 已提交
3341

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

G
ge-yafang 已提交
3346
**示例:**
A
asfasdff 已提交
3347

G
ge-yafang 已提交
3348
```js
G
ge-yafang 已提交
3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359
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 已提交
3360 3361
            }
        }
G
ge-yafang 已提交
3362
        entries.push(entry);
A
asfasdff 已提交
3363
    }
G
ge-yafang 已提交
3364 3365 3366 3367 3368 3369
    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 已提交
3370
        console.log('GetResult getResultSet succeed.');
G
ge-yafang 已提交
3371 3372
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3373
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3374 3375 3376 3377 3378 3379 3380 3381 3382 3383
    });
    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 已提交
3384 3385


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

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

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

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

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

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

G
ge-yafang 已提交
3401
**示例:**
A
asfasdff 已提交
3402

G
ge-yafang 已提交
3403
```js
G
ge-yafang 已提交
3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414
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 已提交
3415 3416
            }
        }
G
ge-yafang 已提交
3417
        entries.push(entry);
A
asfasdff 已提交
3418
    }
G
ge-yafang 已提交
3419 3420 3421 3422
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3423
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
3424
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3425 3426 3427 3428 3429 3430 3431
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3432 3433


3434
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3435

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

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

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

G
ge-yafang 已提交
3442
**参数:**
A
asfasdff 已提交
3443

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

G
ge-yafang 已提交
3448
**返回值:**
A
asfasdff 已提交
3449

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

G
ge-yafang 已提交
3454
**示例:**
A
asfasdff 已提交
3455

G
ge-yafang 已提交
3456
```js
G
ge-yafang 已提交
3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467
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 已提交
3468 3469
            }
        }
G
ge-yafang 已提交
3470
        entries.push(entry);
A
asfasdff 已提交
3471
    }
G
ge-yafang 已提交
3472 3473 3474 3475 3476 3477 3478 3479
    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 已提交
3480
        console.log(' getResultSet succeed.');
G
ge-yafang 已提交
3481 3482
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3483
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3484 3485 3486 3487 3488
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3489

3490
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
3491

3492
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3493

G
ge-yafang 已提交
3494
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3495

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

G
ge-yafang 已提交
3498
**参数:**
A
asfasdff 已提交
3499

W
wangkai 已提交
3500
| 参数名  | 类型 | 必填  | 说明                    |
3501
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3502 3503
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。             |
A
asfasdff 已提交
3504

G
ge-yafang 已提交
3505
**示例:**
A
asfasdff 已提交
3506

G
ge-yafang 已提交
3507
```js
G
ge-yafang 已提交
3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521
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 已提交
3522 3523


3524
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
3525

3526
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3527

G
ge-yafang 已提交
3528
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3529

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

G
ge-yafang 已提交
3532
**参数:**
A
asfasdff 已提交
3533

W
wangkai 已提交
3534
| 参数名  | 类型 | 必填  | 说明                    |
3535
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3536
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
A
asfasdff 已提交
3537

G
ge-yafang 已提交
3538
**返回值:**
A
asfasdff 已提交
3539

3540 3541
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3542
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3543

G
ge-yafang 已提交
3544
**示例:**
A
asfasdff 已提交
3545

G
ge-yafang 已提交
3546
```js
G
ge-yafang 已提交
3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558
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 已提交
3559 3560


3561
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
3562

3563
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3564

G
ge-yafang 已提交
3565
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
3566

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

G
ge-yafang 已提交
3569
**参数:**
A
asfasdff 已提交
3570

W
wangkai 已提交
3571
| 参数名  | 类型 | 必填  | 说明                    |
3572
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3573
| query  |[Query](#query8)   | 是    |表示查询对象。         |
G
ge-yafang 已提交
3574
| callback  |AsyncCallback&lt;number&gt;   | 是    |回调函数。返回与指定Query对象匹配的结果数。         |
A
asfasdff 已提交
3575

G
ge-yafang 已提交
3576
**示例:**
A
asfasdff 已提交
3577

G
ge-yafang 已提交
3578
```js
G
ge-yafang 已提交
3579 3580 3581 3582 3583 3584 3585 3586 3587 3588
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 已提交
3589 3590
            }
        }
G
ge-yafang 已提交
3591
        entries.push(entry);
A
asfasdff 已提交
3592
    }
G
ge-yafang 已提交
3593 3594 3595 3596
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3597
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
3598
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3599 3600 3601 3602 3603 3604
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3605 3606


3607
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
3608

3609
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3610

G
ge-yafang 已提交
3611
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
3612

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

G
ge-yafang 已提交
3615
**参数:**
A
asfasdff 已提交
3616

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

G
ge-yafang 已提交
3621
**返回值:**
A
asfasdff 已提交
3622

3623 3624
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3625
|Promise&lt;number&gt; |Promise对象。获取与指定Query对象匹配的结果数。|
A
asfasdff 已提交
3626

G
ge-yafang 已提交
3627
**示例:**
A
asfasdff 已提交
3628

G
ge-yafang 已提交
3629
```js
G
ge-yafang 已提交
3630 3631 3632 3633 3634 3635 3636 3637 3638 3639
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 已提交
3640 3641
            }
        }
G
ge-yafang 已提交
3642
        entries.push(entry);
A
asfasdff 已提交
3643
    }
G
ge-yafang 已提交
3644 3645 3646 3647 3648 3649 3650 3651
    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 已提交
3652
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
3653
    }).catch((err) => {
G
ge-yafang 已提交
3654
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3655 3656 3657 3658 3659
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3660 3661


3662
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
3663

3664
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3665

G
ge-yafang 已提交
3666
删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
3667

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

G
ge-yafang 已提交
3670
**参数:**
A
asfasdff 已提交
3671

W
wangkai 已提交
3672
| 参数名  | 类型 | 必填  | 说明                    |
3673 3674 3675
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3676

G
ge-yafang 已提交
3677
**示例:**
A
asfasdff 已提交
3678

G
ge-yafang 已提交
3679
```js
G
ge-yafang 已提交
3680 3681 3682 3683 3684 3685 3686
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 已提交
3687
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
3688 3689 3690 3691
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
3692
                kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
3693 3694 3695
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
3696
        });
G
ge-yafang 已提交
3697 3698 3699 3700 3701
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3702 3703


3704
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
3705

3706
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3707

G
ge-yafang 已提交
3708
删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
3709

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

G
ge-yafang 已提交
3712
**参数:**
A
asfasdff 已提交
3713

W
wangkai 已提交
3714
| 参数名  | 类型 | 必填  | 说明                    |
3715 3716
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3717

G
ge-yafang 已提交
3718
**返回值:**
A
asfasdff 已提交
3719

3720 3721
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3722
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3723

G
ge-yafang 已提交
3724
**示例:**
A
asfasdff 已提交
3725

G
ge-yafang 已提交
3726
```js
G
ge-yafang 已提交
3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750
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 已提交
3751

Y
xiugai  
ylq121 已提交
3752 3753 3754 3755 3756 3757
### sync


sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void

在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
W
wangkai 已提交
3758 3759 3760
> **说明:** 
>
> 其中deviceIds通过调用[deviceManager.getTrustedDeviceListSync](js-apis-device-manager.md#gettrusteddevicelistsync)方法得到。deviceManager模块的接口均为系统接口,仅系统应用可用。
Y
xiugai  
ylq121 已提交
3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776

**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名    | 类型                  | 必填 | 说明                                           |
| --------- | --------------------- | ---- | ---------------------------------------------- |
| deviceIds | string[]              | 是   | 同一组网环境下,需要同步的设备的deviceId列表。 |
| mode      | [SyncMode](#syncmode) | 是   | 同步模式。                                     |
| delayMs   | number                | 否   | 可选参数,允许延时时间,单位:ms(毫秒)。     |

**示例:**

```js
W
wangkai 已提交
3777 3778 3779
import deviceManager from '@ohos.distributedHardware.deviceManager';

let devManager;
Y
xiugai  
ylq121 已提交
3780
let kvStore;
W
wangkai 已提交
3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
// create deviceManager
deviceManager.createDeviceManager('bundleName', (err, value) => {
  if (!err) {
    devManager = value;
    let deviceIds = [];
    if (devManager != null) {
      var devices = devManager.getTrustedDeviceListSync();
      for (var i = 0; i < devices.length; i++) {
        deviceIds[i] = devices[i].deviceId;
      }
    }
    try {
      kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
      });
      kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err, data) {
        if (err != undefined) {
W
wangkai 已提交
3800
          console.log("put err: " + JSON.stringify(err));
W
wangkai 已提交
3801 3802 3803
          return;
        }
        console.log('Succeeded in putting data');
W
wangkai 已提交
3804
        const mode = distributedData.SyncMode.PULL_ONLY;
W
wangkai 已提交
3805
        kvStore.sync(deviceIds, mode, 1000);
W
wangkai 已提交
3806 3807
      });
    } catch (e) {
W
wangkai 已提交
3808
      console.log('Sync e' + e);
W
wangkai 已提交
3809 3810 3811
    }
  }
});
Y
xiugai  
ylq121 已提交
3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837
```

### on('dataChange')<sup>8+</sup>

on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void

订阅指定类型的数据变更通知。

**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名   | 类型                                                      | 必填 | 说明                                                 |
| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------- |
| event    | string                                                    | 是   | 订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type     | [SubscribeType](#subscribetype)                           | 是   | 表示订阅的类型。                                     |
| listener | Callback&lt;[ChangeNotification](#changenotification)&gt; | 是   | 回调函数。                                           |

**示例:**

```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
A
asfasdff 已提交
3838

3839
### on('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
3840

3841
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3842

Y
xiugai  
ylq121 已提交
3843
订阅同步完成事件回调通知。
A
asfasdff 已提交
3844

Y
xiugai  
ylq121 已提交
3845
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3846

G
ge-yafang 已提交
3847
**参数:**
A
asfasdff 已提交
3848

Y
xiugai  
ylq121 已提交
3849 3850 3851 3852
| 参数名       | 类型                                          | 必填 | 说明                                                   |
| ------------ | --------------------------------------------- | ---- | ------------------------------------------------------ |
| event        | string                                        | 是   | 订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback | Callback&lt;Array&lt;[string, number]&gt;&gt; | 是   | 回调函数。用于向调用方发送同步结果的回调。             |
A
asfasdff 已提交
3853

G
ge-yafang 已提交
3854
**示例:**
A
asfasdff 已提交
3855

G
ge-yafang 已提交
3856
```js
G
ge-yafang 已提交
3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872
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 已提交
3873

Y
xiugai  
ylq121 已提交
3874
### off('dataChange')<sup>8+</sup>
A
asfasdff 已提交
3875

Y
xiugai  
ylq121 已提交
3876
off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void
A
asfasdff 已提交
3877

Y
xiugai  
ylq121 已提交
3878
取消订阅数据变更通知。
A
asfasdff 已提交
3879

Y
xiugai  
ylq121 已提交
3880
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3881

G
ge-yafang 已提交
3882
**参数:**
A
asfasdff 已提交
3883

Y
xiugai  
ylq121 已提交
3884 3885 3886 3887
| 参数名   | 类型                                                      | 必填 | 说明                                                     |
| -------- | --------------------------------------------------------- | ---- | -------------------------------------------------------- |
| event    | string                                                    | 是   | 取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener | Callback&lt;[ChangeNotification](#changenotification)&gt; | 否   | 回调函数。                                               |
3888

G
ge-yafang 已提交
3889
**示例:**
A
asfasdff 已提交
3890

G
ge-yafang 已提交
3891
```js
Z
zuojiangjiang 已提交
3892 3893
let kvStore;
class KvstoreModel {
3894
    call(data) {
Y
xiugai  
ylq121 已提交
3895
        console.log("dataChange: " + data);
3896
    }
Y
xiugai  
ylq121 已提交
3897
    subscribeDataChange() {
Z
zuojiangjiang 已提交
3898
        if (kvStore != null) {
Y
xiugai  
ylq121 已提交
3899
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
3900 3901
        }
    }
Y
xiugai  
ylq121 已提交
3902
    unsubscribeDataChange() {
Z
zuojiangjiang 已提交
3903
        if (kvStore != null) {
Y
xiugai  
ylq121 已提交
3904
            kvStore.off('dataChange', this.call);
3905 3906
        }
    }
G
ge-yafang 已提交
3907 3908
}
```
A
asfasdff 已提交
3909

Y
xiugai  
ylq121 已提交
3910
### off('syncComplete')<sup>8+</sup>
Z
zengyawen 已提交
3911

Y
xiugai  
ylq121 已提交
3912
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
G
ge-yafang 已提交
3913

Y
xiugai  
ylq121 已提交
3914
取消订阅同步完成事件回调通知。
Z
zengyawen 已提交
3915

Y
xiugai  
ylq121 已提交
3916
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3917

G
ge-yafang 已提交
3918
**参数:**
A
asfasdff 已提交
3919

Y
xiugai  
ylq121 已提交
3920 3921 3922 3923
| 参数名       | 类型                                          | 必填 | 说明                                                       |
| ------------ | --------------------------------------------- | ---- | ---------------------------------------------------------- |
| event        | string                                        | 是   | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback | Callback&lt;Array&lt;[string, number]&gt;&gt; | 否   | 回调函数。用于向调用方发送同步结果的回调。                 |
A
asfasdff 已提交
3924

G
ge-yafang 已提交
3925
**示例:**
A
asfasdff 已提交
3926

G
ge-yafang 已提交
3927
```js
G
ge-yafang 已提交
3928
let kvStore;
Y
xiugai  
ylq121 已提交
3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}
G
ge-yafang 已提交
3944
```
A
asfasdff 已提交
3945

3946
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
3947

3948
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3949

G
ge-yafang 已提交
3950
设置数据库同步允许的默认延迟,使用callback异步回调。
A
asfasdff 已提交
3951

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

G
ge-yafang 已提交
3954
**参数:**
A
asfasdff 已提交
3955

W
wangkai 已提交
3956
| 参数名  | 类型 | 必填  | 说明                    |
3957 3958 3959 3960
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |
| callback  |AsyncCallback&lt;void&gt;  | 是   |回调函数。   |

G
ge-yafang 已提交
3961
**示例:**
A
asfasdff 已提交
3962

G
ge-yafang 已提交
3963
```js
G
ge-yafang 已提交
3964 3965 3966 3967 3968 3969 3970 3971 3972 3973
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 已提交
3974 3975


3976
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
3977

3978
setSyncParam(defaultAllowedDelayMs: number): Promise&lt;void&gt;
A
asfasdff 已提交
3979

G
ge-yafang 已提交
3980
设置数据库同步允许的默认延迟,使用Promise异步回调。
A
asfasdff 已提交
3981

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

G
ge-yafang 已提交
3984
**参数:**
A
asfasdff 已提交
3985

W
wangkai 已提交
3986
| 参数名  | 类型 | 必填  | 说明                    |
3987 3988 3989
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |

A
asfasdff 已提交
3990

G
ge-yafang 已提交
3991
**返回值:**
A
asfasdff 已提交
3992

3993 3994
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3995
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3996

G
ge-yafang 已提交
3997
**示例:**
A
asfasdff 已提交
3998

G
ge-yafang 已提交
3999
```js
G
ge-yafang 已提交
4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011
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 已提交
4012 4013


4014
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
4015

4016
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
4017

G
ge-yafang 已提交
4018
获取数据库的安全级别,使用callback异步回调。
A
asfasdff 已提交
4019

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

G
ge-yafang 已提交
4022
**参数:**
A
asfasdff 已提交
4023

W
wangkai 已提交
4024
| 参数名  | 类型 | 必填  | 说明                    |
4025
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4026
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。返回数据库的安全级别。    |
A
asfasdff 已提交
4027

G
ge-yafang 已提交
4028
**示例:**
A
asfasdff 已提交
4029

G
ge-yafang 已提交
4030
```js
G
ge-yafang 已提交
4031 4032 4033 4034 4035 4036
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
4037
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
4038 4039
}
```
A
asfasdff 已提交
4040 4041


4042
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
4043

4044
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
4045

G
ge-yafang 已提交
4046
获取数据库的安全级别,使用Promise异步回调。
A
asfasdff 已提交
4047

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

G
ge-yafang 已提交
4050
**返回值:**
A
asfasdff 已提交
4051

4052 4053
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4054
|Promise&lt;[SecurityLevel](#securitylevel)&gt; |Promise对象。返回数据库的安全级别。|
4055

G
ge-yafang 已提交
4056
**示例:**
A
asfasdff 已提交
4057

G
ge-yafang 已提交
4058
```js
G
ge-yafang 已提交
4059 4060 4061 4062 4063 4064 4065 4066
let kvStore;
try {
    kvStore.getSecurityLevel().then((data) => {
        console.log(' getSecurityLevel success');
    }).catch((err) => {
        console.log('getSecurityLevel fail ' + JSON.stringify(err));
    });
}catch(e) {
4067
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
4068 4069
}
```
A
asfasdff 已提交
4070 4071


A
asfasdff 已提交
4072
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
4073

G
ge-yafang 已提交
4074 4075 4076 4077 4078 4079 4080
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。

比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。

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

4082
### get<sup>8+</sup>
A
asfasdff 已提交
4083

4084
get(deviceId: string, key: string, callback: AsyncCallback&lt;boolean|string|number|Uint8Array&gt;): void
A
asfasdff 已提交
4085

G
ge-yafang 已提交
4086
获取与指定设备ID和key匹配的string值,使用callback异步回调。
A
asfasdff 已提交
4087

G
ge-yafang 已提交
4088
**系统能力:**   SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4089

G
ge-yafang 已提交
4090
**参数:**
A
asfasdff 已提交
4091

W
wangkai 已提交
4092
| 参数名  | 类型 | 必填  | 说明                    |
4093 4094
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
4095
| key       |string  | 是    |表示要查询key值的键。    |
G
ge-yafang 已提交
4096
| callback  |AsyncCallback&lt;boolean\|string\|number\|Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |
A
asfasdff 已提交
4097

G
ge-yafang 已提交
4098
**示例:**
A
asfasdff 已提交
4099

G
ge-yafang 已提交
4100
```js
G
ge-yafang 已提交
4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114
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 已提交
4115 4116


4117
### get<sup>8+</sup>
A
asfasdff 已提交
4118

4119
get(deviceId: string, key: string): Promise&lt;boolean|string|number|Uint8Array&gt;
A
asfasdff 已提交
4120

G
ge-yafang 已提交
4121
获取与指定设备ID和key匹配的string值,使用Promise异步回调。
A
asfasdff 已提交
4122

G
ge-yafang 已提交
4123
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4124

G
ge-yafang 已提交
4125
**参数:**
A
asfasdff 已提交
4126

W
wangkai 已提交
4127
| 参数名  | 类型 | 必填  | 说明                    |
4128 4129
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
4130
| key       |string  | 是    |表示要查询key值的键。    |
A
asfasdff 已提交
4131

G
ge-yafang 已提交
4132
**返回值:**
A
asfasdff 已提交
4133

4134 4135
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4136
|Promise&lt;boolean\|string\|number\|Uint8Array&gt; |Promise对象。返回匹配给定条件的字符串值。|
A
asfasdff 已提交
4137

G
ge-yafang 已提交
4138
**示例:**
A
asfasdff 已提交
4139

G
ge-yafang 已提交
4140
```js
G
ge-yafang 已提交
4141 4142 4143 4144 4145 4146 4147 4148 4149 4150
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 已提交
4151
        });
G
ge-yafang 已提交
4152 4153 4154 4155 4156 4157 4158
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
4159 4160


4161
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4162

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

G
ge-yafang 已提交
4165
获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。
A
asfasdff 已提交
4166

G
ge-yafang 已提交
4167
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4168

G
ge-yafang 已提交
4169
**参数:**
A
asfasdff 已提交
4170

W
wangkai 已提交
4171
| 参数名  | 类型 | 必填  | 说明                    |
4172 4173 4174 4175
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是  |回调函数,返回满足给定条件的所有键值对的列表。    |
A
asfasdff 已提交
4176

G
ge-yafang 已提交
4177
**示例:**
A
asfasdff 已提交
4178

G
ge-yafang 已提交
4179
```js
G
ge-yafang 已提交
4180 4181 4182 4183 4184 4185 4186 4187 4188 4189
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 已提交
4190 4191
            }
        }
G
ge-yafang 已提交
4192
        entries.push(entry);
A
asfasdff 已提交
4193
    }
G
ge-yafang 已提交
4194 4195 4196
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
4197
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
4198
            console.log('getEntries success');
4199 4200
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4201 4202 4203 4204 4205 4206
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4207 4208


4209
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4210

4211
getEntries(deviceId: string, keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4212

G
ge-yafang 已提交
4213
获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
4214

G
ge-yafang 已提交
4215
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4216

G
ge-yafang 已提交
4217
**参数:**
A
asfasdff 已提交
4218

W
wangkai 已提交
4219
| 参数名  | 类型 | 必填  | 说明                    |
4220 4221 4222
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4223

G
ge-yafang 已提交
4224
**返回值:**
A
asfasdff 已提交
4225

4226 4227
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4228
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配给定条件的所有键值对的列表。|
A
asfasdff 已提交
4229

G
ge-yafang 已提交
4230
**示例:**
A
asfasdff 已提交
4231

G
ge-yafang 已提交
4232
```js
G
ge-yafang 已提交
4233 4234 4235 4236 4237 4238 4239 4240 4241 4242
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 已提交
4243 4244
            }
        }
G
ge-yafang 已提交
4245 4246 4247 4248 4249
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
4250
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
4251
            console.log('getEntries success');
4252
            console.log('entries.length: ' + entries.length);
4253
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
4254 4255
            console.log('entries[0].value: ' + JSON.stringify(entries[0].value));
            console.log('entries[0].value.value: ' + entries[0].value.value);
A
asfasdff 已提交
4256
        }).catch((err) => {
G
ge-yafang 已提交
4257
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4258
        });
G
ge-yafang 已提交
4259 4260 4261 4262 4263 4264 4265
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4266 4267


4268
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4269

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

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

G
ge-yafang 已提交
4274
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4275

G
ge-yafang 已提交
4276
**参数:**
A
asfasdff 已提交
4277

W
wangkai 已提交
4278
| 参数名  | 类型 | 必填  | 说明                    |
4279
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4280
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4281
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4282

G
ge-yafang 已提交
4283
**示例:**
A
asfasdff 已提交
4284

G
ge-yafang 已提交
4285
```js
G
ge-yafang 已提交
4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296
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 已提交
4297 4298
            }
        }
G
ge-yafang 已提交
4299
        entries.push(entry);
A
asfasdff 已提交
4300
    }
G
ge-yafang 已提交
4301 4302 4303 4304 4305 4306
    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');
4307
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
4308
            console.log('getEntries success');
4309 4310
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4311 4312 4313 4314 4315 4316 4317
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4318 4319


4320
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4321

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

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

G
ge-yafang 已提交
4326
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4327

G
ge-yafang 已提交
4328
**参数:**
A
asfasdff 已提交
4329

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

G
ge-yafang 已提交
4334
**返回值:**
A
asfasdff 已提交
4335

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

G
ge-yafang 已提交
4340
**示例:**
A
asfasdff 已提交
4341

G
ge-yafang 已提交
4342
```js
G
ge-yafang 已提交
4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353
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 已提交
4354 4355
            }
        }
G
ge-yafang 已提交
4356 4357 4358 4359 4360 4361 4362
        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");
4363
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
4364
            console.log('getEntries success');
A
asfasdff 已提交
4365
        }).catch((err) => {
G
ge-yafang 已提交
4366
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4367
        });
G
ge-yafang 已提交
4368 4369 4370 4371 4372 4373 4374 4375
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4376 4377


4378
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4379

4380
getEntries(deviceId: string, query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4381

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

G
ge-yafang 已提交
4384
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4385

G
ge-yafang 已提交
4386
**参数:**
A
asfasdff 已提交
4387

W
wangkai 已提交
4388
| 参数名  | 类型 | 必填  | 说明                    |
4389 4390
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4391
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4392
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4393

G
ge-yafang 已提交
4394
**示例:**
A
asfasdff 已提交
4395

G
ge-yafang 已提交
4396
```js
G
ge-yafang 已提交
4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407
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 已提交
4408 4409
            }
        }
G
ge-yafang 已提交
4410
        entries.push(entry);
A
asfasdff 已提交
4411
    }
G
ge-yafang 已提交
4412 4413 4414 4415 4416 4417
    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");
4418
        kvStore.getEntries('localDeviceId', query, function (err,entries) {
G
ge-yafang 已提交
4419
            console.log('getEntries success');
4420 4421
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4422 4423 4424 4425 4426 4427 4428
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4429 4430


4431
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4432

4433
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4434

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

G
ge-yafang 已提交
4437
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4438

G
ge-yafang 已提交
4439
**参数:**
A
asfasdff 已提交
4440

W
wangkai 已提交
4441
| 参数名  | 类型 | 必填  | 说明                    |
4442 4443
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4444
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4445

G
ge-yafang 已提交
4446
**返回值:**
A
asfasdff 已提交
4447

4448 4449
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4450
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。|
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 {
    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 已提交
4466 4467
            }
        }
G
ge-yafang 已提交
4468 4469 4470 4471 4472 4473 4474 4475
        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");
4476
        kvStore.getEntries('localDeviceId', query).then((entries) => {
G
ge-yafang 已提交
4477
            console.log('getEntries success');
A
asfasdff 已提交
4478
        }).catch((err) => {
G
ge-yafang 已提交
4479
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4480
        });
G
ge-yafang 已提交
4481 4482 4483 4484 4485 4486 4487 4488
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4489 4490


4491
### getResultSet<sup>8+</sup><a name="devicekvstore_getresultset"></a>
A
asfasdff 已提交
4492

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

G
ge-yafang 已提交
4495
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4496

G
ge-yafang 已提交
4497
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4498

G
ge-yafang 已提交
4499
**参数:**
A
asfasdff 已提交
4500

W
wangkai 已提交
4501
| 参数名  | 类型 | 必填  | 说明                    |
4502 4503 4504
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
W
wangkai 已提交
4505
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;  | 是  |回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4506

G
ge-yafang 已提交
4507
**示例:**
A
asfasdff 已提交
4508

G
ge-yafang 已提交
4509
```js
G
ge-yafang 已提交
4510 4511 4512 4513
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
4514
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4515
        resultSet = result;
W
wangkai 已提交
4516
        kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4517 4518 4519 4520 4521 4522 4523
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4524 4525


4526
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4527

4528
getResultSet(deviceId: string, keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4529

G
ge-yafang 已提交
4530
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4531

G
ge-yafang 已提交
4532
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4533

G
ge-yafang 已提交
4534
**参数:**
A
asfasdff 已提交
4535

W
wangkai 已提交
4536
| 参数名  | 类型 | 必填  | 说明                    |
4537 4538 4539
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4540

G
ge-yafang 已提交
4541
**返回值:**
A
asfasdff 已提交
4542

4543 4544
| 类型    | 说明       |
| ------  | -------   |
W
wangkai 已提交
4545
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4546

G
ge-yafang 已提交
4547
**示例:**
A
asfasdff 已提交
4548

G
ge-yafang 已提交
4549
```js
G
ge-yafang 已提交
4550 4551 4552 4553
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
G
ge-yafang 已提交
4554
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4555 4556
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4557
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4558 4559 4560 4561 4562 4563 4564 4565 4566 4567
    });
    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 已提交
4568 4569


4570
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4571

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

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

G
ge-yafang 已提交
4576
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4577

G
ge-yafang 已提交
4578
**参数:**
A
asfasdff 已提交
4579

W
wangkai 已提交
4580
| 参数名  | 类型 | 必填  | 说明                    |
4581
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4582
| query  |[Query](#query8)  | 是    |表示查询对象。    |
W
wangkai 已提交
4583
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;  | 是  |回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4584

G
ge-yafang 已提交
4585
**示例:**
A
asfasdff 已提交
4586

G
ge-yafang 已提交
4587
```js
G
ge-yafang 已提交
4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598
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 已提交
4599 4600
            }
        }
G
ge-yafang 已提交
4601
        entries.push(entry);
A
asfasdff 已提交
4602
    }
G
ge-yafang 已提交
4603 4604 4605 4606 4607
    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 已提交
4608
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
4609
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4610
            resultSet = result;
W
wangkai 已提交
4611
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4612 4613 4614 4615 4616 4617 4618 4619
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4620 4621


4622
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4623

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

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

G
ge-yafang 已提交
4628
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4629

G
ge-yafang 已提交
4630
**参数:**
A
asfasdff 已提交
4631

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

G
ge-yafang 已提交
4636
**返回值:**
A
asfasdff 已提交
4637

4638 4639
| 类型    | 说明       |
| ------  | -------   |
W
wangkai 已提交
4640
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4641

G
ge-yafang 已提交
4642
**示例:**
A
asfasdff 已提交
4643

G
ge-yafang 已提交
4644
```js
G
ge-yafang 已提交
4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655
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 已提交
4656 4657
            }
        }
G
ge-yafang 已提交
4658
        entries.push(entry);
A
asfasdff 已提交
4659
    }
G
ge-yafang 已提交
4660 4661 4662 4663 4664 4665 4666 4667 4668 4669
    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 已提交
4670
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4671 4672
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4673
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4674 4675 4676 4677 4678 4679 4680 4681 4682 4683
    });
    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 已提交
4684 4685


4686
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4687

4688
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4689

G
ge-yafang 已提交
4690
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4691

G
ge-yafang 已提交
4692
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4693

G
ge-yafang 已提交
4694
**参数:**
A
asfasdff 已提交
4695

W
wangkai 已提交
4696
| 参数名  | 类型 | 必填  | 说明                    |
4697 4698
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4699
| query  |[Query](#query8)  | 是    |表示查询对象。    |
W
wangkai 已提交
4700
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;  | 是  |回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4701

G
ge-yafang 已提交
4702
**示例:**
A
asfasdff 已提交
4703

G
ge-yafang 已提交
4704
```js
G
ge-yafang 已提交
4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715
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 已提交
4716 4717
            }
        }
G
ge-yafang 已提交
4718
        entries.push(entry);
A
asfasdff 已提交
4719
    }
G
ge-yafang 已提交
4720 4721 4722 4723
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4724
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
G
ge-yafang 已提交
4725
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4726
            resultSet = result;
W
wangkai 已提交
4727
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4728 4729 4730 4731 4732 4733 4734 4735
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4736 4737


4738
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
4739

4740
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4741

G
ge-yafang 已提交
4742
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4743

G
ge-yafang 已提交
4744
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4745

G
ge-yafang 已提交
4746
**参数:**
A
asfasdff 已提交
4747

W
wangkai 已提交
4748
| 参数名  | 类型 | 必填  | 说明                    |
4749 4750
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4751
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4752

G
ge-yafang 已提交
4753
**返回值:**
A
asfasdff 已提交
4754

4755 4756
| 类型    | 说明       |
| ------  | -------   |
W
wangkai 已提交
4757
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。|
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 4772
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 已提交
4773 4774
            }
        }
G
ge-yafang 已提交
4775
        entries.push(entry);
A
asfasdff 已提交
4776
    }
G
ge-yafang 已提交
4777 4778 4779 4780 4781 4782 4783 4784
    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 已提交
4785
        console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
4786 4787
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4788
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801
    });
    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 已提交
4802 4803


4804
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4805

4806
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4807

G
ge-yafang 已提交
4808
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4809

G
ge-yafang 已提交
4810
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4811

G
ge-yafang 已提交
4812
**参数:**
A
asfasdff 已提交
4813

W
wangkai 已提交
4814
| 参数名  | 类型 | 必填  | 说明                    |
4815
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4816
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
4817
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
4818

G
ge-yafang 已提交
4819
**示例:**
A
asfasdff 已提交
4820

G
ge-yafang 已提交
4821
```js
G
ge-yafang 已提交
4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836
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 已提交
4837 4838


4839
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4840

4841
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
4842

G
ge-yafang 已提交
4843
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4844

G
ge-yafang 已提交
4845
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4846

G
ge-yafang 已提交
4847
**参数:**
A
asfasdff 已提交
4848

W
wangkai 已提交
4849
| 参数名  | 类型 | 必填  | 说明                    |
4850
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4851
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
A
asfasdff 已提交
4852

G
ge-yafang 已提交
4853
**返回值:**
A
asfasdff 已提交
4854

4855 4856
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4857
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4858

G
ge-yafang 已提交
4859
**示例:**
A
asfasdff 已提交
4860

G
ge-yafang 已提交
4861
```js
G
ge-yafang 已提交
4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874
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 已提交
4875 4876


4877
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4878

4879
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
4880

G
ge-yafang 已提交
4881
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4882

G
ge-yafang 已提交
4883
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4884

G
ge-yafang 已提交
4885
**参数:**
A
asfasdff 已提交
4886

W
wangkai 已提交
4887
| 参数名  | 类型 | 必填  | 说明                    |
4888
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4889
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4890
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定Query对象匹配的结果数。    |
A
asfasdff 已提交
4891

G
ge-yafang 已提交
4892
**示例:**
A
asfasdff 已提交
4893

G
ge-yafang 已提交
4894
```js
G
ge-yafang 已提交
4895 4896 4897 4898 4899 4900 4901 4902 4903 4904
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 已提交
4905 4906
            }
        }
G
ge-yafang 已提交
4907
        entries.push(entry);
A
asfasdff 已提交
4908
    }
G
ge-yafang 已提交
4909 4910 4911 4912 4913
    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 已提交
4914
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
4915
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4916 4917 4918 4919 4920 4921
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4922 4923


4924
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4925

4926
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4927

G
ge-yafang 已提交
4928
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
4929

G
ge-yafang 已提交
4930
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4931

G
ge-yafang 已提交
4932
**参数:**
A
asfasdff 已提交
4933

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

G
ge-yafang 已提交
4938
**返回值:**
A
asfasdff 已提交
4939

4940 4941
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4942
|Promise&lt;number&gt; |Promise对象。返回与指定Query对象匹配的结果数。|
A
asfasdff 已提交
4943

G
ge-yafang 已提交
4944
**示例:**
A
asfasdff 已提交
4945

G
ge-yafang 已提交
4946
```js
G
ge-yafang 已提交
4947 4948 4949 4950 4951 4952 4953 4954 4955 4956
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 已提交
4957 4958
            }
        }
G
ge-yafang 已提交
4959
        entries.push(entry);
A
asfasdff 已提交
4960
    }
G
ge-yafang 已提交
4961 4962 4963 4964 4965 4966 4967 4968 4969
    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 已提交
4970
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4971
    }).catch((err) => {
G
ge-yafang 已提交
4972
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4973 4974 4975 4976 4977
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4978 4979


4980
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4981

A
asfasdff 已提交
4982
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
4983

G
ge-yafang 已提交
4984
获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
4985

G
ge-yafang 已提交
4986
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4987

G
ge-yafang 已提交
4988
**参数:**
A
asfasdff 已提交
4989

W
wangkai 已提交
4990
| 参数名  | 类型 | 必填  | 说明                    |
4991 4992
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4993
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
4994
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的结果数。    |
A
asfasdff 已提交
4995

G
ge-yafang 已提交
4996
**示例:**
A
asfasdff 已提交
4997

G
ge-yafang 已提交
4998
```js
G
ge-yafang 已提交
4999 5000 5001 5002 5003 5004 5005 5006 5007 5008
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 已提交
5009 5010
            }
        }
G
ge-yafang 已提交
5011
        entries.push(entry);
A
asfasdff 已提交
5012
    }
G
ge-yafang 已提交
5013 5014 5015 5016
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
5017
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
G
ge-yafang 已提交
5018
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5019 5020 5021 5022 5023 5024
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5025 5026


5027
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
5028

5029
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
5030

G
ge-yafang 已提交
5031
获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
5032

G
ge-yafang 已提交
5033
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5034

G
ge-yafang 已提交
5035
**参数:**
A
asfasdff 已提交
5036

W
wangkai 已提交
5037
| 参数名  | 类型 | 必填  | 说明                    |
5038 5039
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5040
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
5041

G
ge-yafang 已提交
5042
**返回值:**
A
asfasdff 已提交
5043

5044 5045
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5046
|Promise&lt;number&gt; |Promise对象。返回与指定设备ID和Query对象匹配的结果数。|
A
asfasdff 已提交
5047

G
ge-yafang 已提交
5048
**示例:**
A
asfasdff 已提交
5049

G
ge-yafang 已提交
5050
```js
G
ge-yafang 已提交
5051 5052 5053 5054 5055 5056 5057 5058 5059 5060
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 已提交
5061 5062
            }
        }
G
ge-yafang 已提交
5063
        entries.push(entry);
A
asfasdff 已提交
5064
    }
G
ge-yafang 已提交
5065 5066 5067 5068 5069 5070 5071 5072
    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 已提交
5073
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5074
    }).catch((err) => {
G
ge-yafang 已提交
5075
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5076 5077 5078 5079 5080
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5081 5082


5083
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
5084

5085
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
5086

G
ge-yafang 已提交
5087
从当前数据库中删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
5088

G
ge-yafang 已提交
5089
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5090

G
ge-yafang 已提交
5091
**参数:**
A
asfasdff 已提交
5092

W
wangkai 已提交
5093
| 参数名  | 类型 | 必填  | 说明                    |
5094 5095 5096
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
5097

G
ge-yafang 已提交
5098
**示例:**
A
asfasdff 已提交
5099

G
ge-yafang 已提交
5100
```js
G
ge-yafang 已提交
5101 5102 5103 5104 5105 5106 5107
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 已提交
5108
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
5109 5110 5111 5112
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
5113
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
5114 5115 5116
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
5117
        });
G
ge-yafang 已提交
5118 5119 5120 5121 5122
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
5123 5124


5125
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
5126

5127
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
5128

G
ge-yafang 已提交
5129
从当前数据库中删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
5130

G
ge-yafang 已提交
5131
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5132

G
ge-yafang 已提交
5133
**参数:**
A
asfasdff 已提交
5134

W
wangkai 已提交
5135
| 参数名  | 类型 | 必填  | 说明                    |
5136 5137
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
5138

G
ge-yafang 已提交
5139
**返回值:**
A
asfasdff 已提交
5140

5141 5142
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5143
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5144

G
ge-yafang 已提交
5145
**示例:**
A
asfasdff 已提交
5146

G
ge-yafang 已提交
5147
```js
G
ge-yafang 已提交
5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171
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 已提交
5172 5173


5174
### sync<sup>8+</sup>
A
asfasdff 已提交
5175

W
wangkai 已提交
5176
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
A
asfasdff 已提交
5177

G
ge-yafang 已提交
5178
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
5179

Z
zuojiangjiang 已提交
5180
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
A
asfasdff 已提交
5181

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

G
ge-yafang 已提交
5184
**参数:**
A
asfasdff 已提交
5185

W
wangkai 已提交
5186
| 参数名  | 类型 | 必填  | 说明                    |
5187
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
5188
| deviceIds    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
G
ge-yafang 已提交
5189
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
W
wangkai 已提交
5190
| delayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |
5191

G
ge-yafang 已提交
5192
**示例:**
A
asfasdff 已提交
5193

G
ge-yafang 已提交
5194
```js
W
wangkai 已提交
5195 5196 5197
import deviceManager from '@ohos.distributedHardware.deviceManager';

let devManager;
G
ge-yafang 已提交
5198 5199 5200
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
W
wangkai 已提交
5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213
// create deviceManager
deviceManager.createDeviceManager('bundleName', (err, value) => {
  if (!err) {
    devManager = value;
    let deviceIds = [];
    if (devManager != null) {
      var devices = devManager.getTrustedDeviceListSync();
      for (var i = 0; i < devices.length; i++) {
        deviceIds[i] = devices[i].deviceId;
      }
    }
    try {
      kvStore.on('syncComplete', function (data) {
G
ge-yafang 已提交
5214
        console.log('Sync dataChange');
W
wangkai 已提交
5215 5216 5217 5218 5219 5220 5221
      });
      kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err, data) {
        if (err != undefined) {
          console.log("put err: " + JSON.stringify(err));
          return;
        }
        console.log('Succeeded in putting data');
G
ge-yafang 已提交
5222
        const mode = distributedData.SyncMode.PULL_ONLY;
W
wangkai 已提交
5223
        kvStore.sync(deviceIds, mode, 1000);
W
wangkai 已提交
5224 5225 5226 5227 5228 5229
      });
    } catch (e) {
      console.log('Sync e' + e);
    }
  }
});
G
ge-yafang 已提交
5230
```
A
asfasdff 已提交
5231

Y
xiugai  
ylq121 已提交
5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256
### on('dataChange')<sup>8+</sup>

on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void

订阅指定类型的数据变更通知。

**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名   | 类型                                                      | 必填 | 说明                                                 |
| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------- |
| event    | string                                                    | 是   | 订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type     | [SubscribeType](#subscribetype)                           | 是   | 表示订阅的类型。                                     |
| listener | Callback&lt;[ChangeNotification](#changenotification)&gt; | 是   | 回调函数。                                           |

**示例:**

```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```

5257
### on('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
5258

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

Y
xiugai  
ylq121 已提交
5261
订阅同步完成事件回调通知。
A
asfasdff 已提交
5262

Y
xiugai  
ylq121 已提交
5263
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
5264

G
ge-yafang 已提交
5265
**参数:**
A
asfasdff 已提交
5266

Y
xiugai  
ylq121 已提交
5267 5268 5269 5270
| 参数名       | 类型                                          | 必填 | 说明                                                   |
| ------------ | --------------------------------------------- | ---- | ------------------------------------------------------ |
| event        | string                                        | 是   | 订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback | Callback&lt;Array&lt;[string, number]&gt;&gt; | 是   | 回调函数。用于向调用方发送同步结果的回调。             |
A
asfasdff 已提交
5271

G
ge-yafang 已提交
5272
**示例:**
Z
zengyawen 已提交
5273

G
ge-yafang 已提交
5274
```js
W
wangkai 已提交
5275
let kvStore;
G
ge-yafang 已提交
5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290
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 已提交
5291

Y
xiugai  
ylq121 已提交
5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326
### off('dataChange')<sup>8+</sup>

off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void

取消订阅数据变更通知。

**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名   | 类型                                                      | 必填 | 说明                                                     |
| -------- | --------------------------------------------------------- | ---- | -------------------------------------------------------- |
| event    | string                                                    | 是   | 取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener | Callback&lt;[ChangeNotification](#changenotification)&gt; | 否   | 回调函数。                                               |

**示例:**

```js
let kvStore;
class KvstoreModel {
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
        }
    }
    unsubscribeDataChange() {
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
        }
    }
}
```
A
asfasdff 已提交
5327

5328
### off('syncComplete')<sup>8+</sup>
A
asfasdff 已提交
5329

5330
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5331

Y
xiugai  
ylq121 已提交
5332
取消订阅同步完成事件回调通知。
A
asfasdff 已提交
5333

Y
xiugai  
ylq121 已提交
5334
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
5335

G
ge-yafang 已提交
5336
**参数:**
A
asfasdff 已提交
5337

Y
xiugai  
ylq121 已提交
5338 5339 5340 5341
| 参数名       | 类型                                          | 必填 | 说明                                                       |
| ------------ | --------------------------------------------- | ---- | ---------------------------------------------------------- |
| event        | string                                        | 是   | 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback | Callback&lt;Array&lt;[string, number]&gt;&gt; | 否   | 回调函数。用于向调用方发送同步结果的回调。                 |
5342

G
ge-yafang 已提交
5343
**示例:**
A
asfasdff 已提交
5344

G
ge-yafang 已提交
5345
```js
Z
zuojiangjiang 已提交
5346 5347
let kvStore;
class KvstoreModel {
5348 5349 5350 5351
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
5352 5353
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
5354 5355 5356
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
5357 5358
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
5359 5360
        }
    }
G
ge-yafang 已提交
5361 5362
}
```
A
asfasdff 已提交
5363

5364
## SyncMode
Z
zengyawen 已提交
5365

G
ge-yafang 已提交
5366
同步模式枚举。
Z
zengyawen 已提交
5367

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

G
ge-yafang 已提交
5370
| 名称       | 值     | 说明                    |
5371 5372
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
G
ge-yafang 已提交
5373
| PUSH_ONLY  |1          |表示只能从本端推送数据到远端。 |
5374
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |