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

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

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

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

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

18

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

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


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

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

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

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

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

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

G
ge-yafang 已提交
41
**示例:**
42

W
wangkai 已提交
43
Stage模型下的示例:
W
wangkai 已提交
44
```ts
W
wangkai 已提交
45
import AbilityStage from '@ohos.application.Ability'
G
ge-yafang 已提交
46
let kvManager;
W
wangkai 已提交
47
export default class MyAbilityStage extends AbilityStage {
S
siyuan.liu 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    onCreate() {
        console.log("MyAbilityStage onCreate")
        let context = this.context
        const kvManagerConfig = {
            context: context,
            bundleName: 'com.example.datamanagertest',
            userInfo: {
                userId: '0',
                userType: distributedData.UserType.SAME_USER_ID
            }
        }
        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;
        });
A
asfasdff 已提交
67
    }
W
wangkai 已提交
68 69 70
}
```

W
wangkai 已提交
71
FA模型下的示例:
W
wangkai 已提交
72
```js
S
siyuan.liu 已提交
73
import featureAbility from '@ohos.ability.featureAbility'
W
wangkai 已提交
74
let kvManager;
S
siyuan.liu 已提交
75 76
let context = featureAbility.getContext()
const kvManagerConfig = {
S
siyuan.liu 已提交
77 78 79 80 81 82
    context: context,
    bundleName: 'com.example.datamanagertest',
    userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
    }
W
wangkai 已提交
83
}
S
siyuan.liu 已提交
84
distributedData.createKVManager(kvManagerConfig, function (err, manager) {
S
siyuan.liu 已提交
85 86 87 88 89 90
    if (err) {
        console.log("Failed to create KVManager: " + JSON.stringify(err));
        return;
    }
    console.log("Created KVManager");
    kvManager = manager;
S
siyuan.liu 已提交
91
});
W
wangkai 已提交
92
```
A
asfasdff 已提交
93

94
## distributedData.createKVManager
A
asfasdff 已提交
95

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

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

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

G
ge-yafang 已提交
102
**参数:**
Z
zengyawen 已提交
103

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

G
ge-yafang 已提交
108
**返回值:**
A
asfasdff 已提交
109

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

G
ge-yafang 已提交
114
**示例:**
115

W
wangkai 已提交
116
Stage模型下的示例:
W
wangkai 已提交
117
```ts
W
wangkai 已提交
118 119 120
import AbilityStage from '@ohos.application.Ability'
let kvManager;
export default class MyAbilityStage extends AbilityStage {
S
siyuan.liu 已提交
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
    onCreate() {
        console.log("MyAbilityStage onCreate")
        let context = this.context
        const kvManagerConfig = {
            context: context,
            bundleName: 'com.example.datamanagertest',
            userInfo: {
                userId: '0',
                userType: distributedData.UserType.SAME_USER_ID
            }
        }
        distributedData.createKVManager(kvManagerConfig).then((manager) => {
            console.log("Succeeded in creating KVManager");
            kvManager = manager;
        }).catch((err) => {
            console.log("Failed to create KVManager: " + JSON.stringify(err));
        });
W
wangkai 已提交
138 139 140
    }
}
```
A
asfasdff 已提交
141

W
wangkai 已提交
142
FA模型下的示例:
G
ge-yafang 已提交
143
```js
S
siyuan.liu 已提交
144
import featureAbility from '@ohos.ability.featureAbility'
G
ge-yafang 已提交
145
let kvManager;
S
siyuan.liu 已提交
146 147
let context = featureAbility.getContext()
const kvManagerConfig = {
S
siyuan.liu 已提交
148 149 150 151 152 153
    context: context,
    bundleName: 'com.example.datamanagertest',
    userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
    }
G
ge-yafang 已提交
154
}
S
siyuan.liu 已提交
155
distributedData.createKVManager(kvManagerConfig).then((manager) => {
S
siyuan.liu 已提交
156 157
    console.log("Succeeded in creating KVManager");
    kvManager = manager;
S
siyuan.liu 已提交
158
}).catch((err) => {
S
siyuan.liu 已提交
159
    console.log("Failed to create KVManager: " + JSON.stringify(err));
S
siyuan.liu 已提交
160
});
G
ge-yafang 已提交
161
```
A
asfasdff 已提交
162

163
## KVManagerConfig
Z
zengyawen 已提交
164 165 166

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

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

169 170
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
171
| context<sup>9+<sup> | Context | 是 | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。|
172 173 174 175
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 调用方的包名。 |

## UserInfo
Z
zengyawen 已提交
176 177 178

用户信息。

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

181 182 183 184 185 186 187
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userId | string | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
188

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

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

G
ge-yafang 已提交
193
| 名称 | 值 | 说明 |
194 195 196 197 198
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
199

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

202
### getKVStore
Z
zengyawen 已提交
203

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

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

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

G
ge-yafang 已提交
210
**参数:**
A
asfasdff 已提交
211

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

G
ge-yafang 已提交
218
**示例:**
A
asfasdff 已提交
219

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


246
### getKVStore
A
asfasdff 已提交
247

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

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

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

G
ge-yafang 已提交
254
**参数:**
A
asfasdff 已提交
255

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


G
ge-yafang 已提交
262
**返回值:**
A
asfasdff 已提交
263

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

G
ge-yafang 已提交
268
**示例:**
269

G
ge-yafang 已提交
270
```js
G
ge-yafang 已提交
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
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 已提交
292

293
### closeKVStore<sup>8+</sup>
A
asfasdff 已提交
294

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

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

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

G
ge-yafang 已提交
301
**参数:**
302 303 304 305 306 307


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

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

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

A
asfasdff 已提交
338

339
### closeKVStore<sup>8+</sup>
A
asfasdff 已提交
340

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

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

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

G
ge-yafang 已提交
347
**参数:**
A
asfasdff 已提交
348

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

G
ge-yafang 已提交
355
**返回值:**
A
asfasdff 已提交
356

357 358
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
359
| Promise\<void> | 无返回结果的Promise对象。 |
A
asfasdff 已提交
360

G
ge-yafang 已提交
361
**示例:**
A
asfasdff 已提交
362

G
ge-yafang 已提交
363
```js
G
ge-yafang 已提交
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
 try {
    kvManager.getKVStore('storeId', options).then(async (store) => {
    console.log('getKVStore success');
    kvStore = store;
W
wangkai 已提交
379
    kvManager.closeKVStore('appId', 'storeId', kvStore).then(() => {
G
ge-yafang 已提交
380 381 382 383 384 385 386 387 388 389 390
        console.log('closeKVStore success');
    }).catch((err) => {
        console.log('closeKVStore err ' + JSON.stringify(err));
    });
    }).catch((err) => {
        console.log('CloseKVStore getKVStore err ' + JSON.stringify(err));
    });
 } catch (e) {
    console.log('closeKVStore e ' + e);
}  
```
A
asfasdff 已提交
391 392


393
### deleteKVStore<sup>8+</sup>
A
asfasdff 已提交
394

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

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

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

G
ge-yafang 已提交
401
**参数:**
A
asfasdff 已提交
402

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

G
ge-yafang 已提交
409
**示例:**
A
asfasdff 已提交
410

G
ge-yafang 已提交
411
```js
G
ge-yafang 已提交
412 413 414 415 416 417 418 419 420 421 422 423 424 425 426
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 已提交
427
        kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
G
ge-yafang 已提交
428
            console.log('deleteKVStore success');
A
asfasdff 已提交
429
        });
G
ge-yafang 已提交
430 431 432 433 434
    });
} catch (e) {
    console.log('DeleteKVStore e ' + e);
}
```
A
asfasdff 已提交
435

436
### deleteKVStore<sup>8+</sup>
A
asfasdff 已提交
437

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

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

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

G
ge-yafang 已提交
444
**参数:**
Z
zengyawen 已提交
445

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


G
ge-yafang 已提交
452
**返回值:**
A
asfasdff 已提交
453

454 455
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
456
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
A
asfasdff 已提交
457

G
ge-yafang 已提交
458
**示例:**
A
asfasdff 已提交
459

G
ge-yafang 已提交
460
```js
G
ge-yafang 已提交
461 462 463 464 465 466 467 468 469 470 471 472
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 已提交
473
    kvManager.getKVStore('storeId', options).then(async (store) => {
G
ge-yafang 已提交
474 475
        console.log('getKVStore success');
        kvStore = store;
W
wangkai 已提交
476
        kvManager.deleteKVStore('appId', 'storeId').then(() => {
G
ge-yafang 已提交
477
            console.log('deleteKVStore success');
A
asfasdff 已提交
478
        }).catch((err) => {
G
ge-yafang 已提交
479
            console.log('deleteKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
480
        });
G
ge-yafang 已提交
481 482 483 484 485 486 487
    }).catch((err) => {
        console.log('getKVStore err ' + JSON.stringify(err));
    });
} catch (e) {
    console.log('deleteKVStore e ' + e);
}
```
A
asfasdff 已提交
488 489


490
### getAllKVStoreId<sup>8+</sup>
A
asfasdff 已提交
491

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

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

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

G
ge-yafang 已提交
498
**参数:**
A
asfasdff 已提交
499

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

G
ge-yafang 已提交
505
**示例:**
A
asfasdff 已提交
506

G
ge-yafang 已提交
507
```js
G
ge-yafang 已提交
508 509 510 511 512 513 514 515 516 517
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 已提交
518 519


520
### getAllKVStoreId<sup>8+</sup>
A
asfasdff 已提交
521

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

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

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

G
ge-yafang 已提交
528
**参数:**
A
asfasdff 已提交
529

530 531 532
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
533 534


G
ge-yafang 已提交
535
**返回值:**
Z
zengyawen 已提交
536

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

G
ge-yafang 已提交
541
**示例:**
A
asfasdff 已提交
542

G
ge-yafang 已提交
543
```js
G
ge-yafang 已提交
544 545 546
let kvManager;
try {
    console.log('GetAllKVStoreId');
547
    kvManager.getAllKVStoreId('appId').then((data) => {
G
ge-yafang 已提交
548 549 550 551 552 553 554 555 556
        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 已提交
557 558


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

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

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

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

G
ge-yafang 已提交
567
**参数:**
A
asfasdff 已提交
568

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

G
ge-yafang 已提交
574
**示例:**
A
asfasdff 已提交
575

G
ge-yafang 已提交
576
```js
G
ge-yafang 已提交
577 578 579 580 581 582
let kvManager;
try {
    
    console.log('KVManagerOn');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
583
    }
G
ge-yafang 已提交
584 585 586 587 588
    kvManager.on('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
589 590


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

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

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

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

G
ge-yafang 已提交
599
**参数:**
A
asfasdff 已提交
600

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

A
asfasdff 已提交
606

G
ge-yafang 已提交
607
**示例:**
A
asfasdff 已提交
608

G
ge-yafang 已提交
609
```js
G
ge-yafang 已提交
610 611 612 613 614
let kvManager;
try {
    console.log('KVManagerOff');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
615
    }
G
ge-yafang 已提交
616 617 618 619
    kvManager.off('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
620
    
G
ge-yafang 已提交
621
```
A
asfasdff 已提交
622

623
## Options
Z
zengyawen 已提交
624 625 626

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

627

628 629
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
630 631 632 633 634 635 636
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core    |
| autoSync  | boolean | 否 |设置数据库文件是否自动同步,默认不自动同步。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC     |
| kvStoreType | [KVStoreType](#kvstoretype) | 否 |设置要创建的数据库类型,默认为多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
| securityLevel | [SecurityLevel](#securitylevel) | 否 |设置数据库安全级别,默认不设置安全级别。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core  |
| schema<sup>8+</sup> | [Schema](#schema8) | 否 | 设置定义存储在数据库中的值。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore |
637 638 639


## KVStoreType
Z
zengyawen 已提交
640

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

643

G
ge-yafang 已提交
644
| 名称  | 值 | 说明                    |
645
| ---   | ----  | ----------------------- |
646 647 648
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
| MULTI_VERSION   | 2 | 表示多版本数据库。此类型当前不允许使用。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore |
649 650 651


## SecurityLevel
Z
zengyawen 已提交
652

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

G
ge-yafang 已提交
655
| 名称  | 值 | 说明                    |
656
| ---   | ----  | ----------------------- |
S
siyuan.liu 已提交
657 658 659 660 661 662
| 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    |
663 664 665


## Constants
Z
zengyawen 已提交
666 667 668

KVStore常量。

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

G
ge-yafang 已提交
671
| 名称  | 值 | 说明                    |
672
| ---   | ----  | ----------------------- |
G
ge-yafang 已提交
673
| MAX_KEY_LENGTH  | 1024 | 数据库中Key允许的最大长度,单位字节。  |
674
| MAX_VALUE_LENGTH  | 4194303 | 数据库中Value允许的最大长度,单位字节。  |
G
ge-yafang 已提交
675
| MAX_KEY_LENGTH_DEVICE  | 896 | 最大设备密钥长度,单位字节。 |
676
| MAX_STORE_ID_LENGTH  | 128 | 数据库标识符允许的最大长度,单位字节。  |
G
ge-yafang 已提交
677 678
| MAX_QUERY_LENGTH  | 512000 | 最大查询长度,单位字节。 |
| MAX_BATCH_SIZE  | 128 | 最大批处理操作数量。 |
A
asfasdff 已提交
679

A
asfasdff 已提交
680
## Schema<sup>8+</sup> ##
A
asfasdff 已提交
681

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

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

W
wufengshan 已提交
686
| 名称  | 类型 | 说明                    |
687
| ---   | ----  | ----------------------- |
G
ge-yafang 已提交
688
| root<sup>8+</sup>  | [FieldNode](#fieldnode8) | 表示json根对象。 |
G
ge-yafang 已提交
689
| indexes<sup>8+</sup>  | Array\<string> | 表示json类型的字符串数组。  |
W
wufengshan 已提交
690 691
| mode<sup>8+</sup>  | number | 表示Schema的模式。  |
| skip<sup>8+</sup>  | number |  Schema的跳跃大小。  |
692

693
### constructor<sup>8+</sup> 
694 695 696 697 698

constructor()

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

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

701
## FieldNode<sup>8+</sup> ##
A
asfasdff 已提交
702 703 704

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

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

W
wufengshan 已提交
707
| 名称  | 类型 | 说明                    |
708
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
709
| nullable<sup>8+</sup>  | boolean | 表示数据库字段是否可以为空。   |
Z
zengyawen 已提交
710
| default<sup>8+</sup>  | string | 表示Fieldnode的默认值。 |
G
ge-yafang 已提交
711
| type<sup>8+</sup>  | number | 表示指定节点对应数据类型的值。 |
712

713
### constructor<sup>8+</sup>
714 715 716 717 718

constructor(name: string)

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

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

G
ge-yafang 已提交
721
**参数:**
722

Z
zengyawen 已提交
723 724 725
| 参数名 | 参数类型 | 必填 | 说明            |
| ------ | -------- | ---- | --------------- |
| name   | string   | 是   | FieldNode的值。 |
726

727
### appendChild<sup>8+</sup>
A
asfasdff 已提交
728

729
appendChild(child: FieldNode): boolean
A
asfasdff 已提交
730

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

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

G
ge-yafang 已提交
735
**参数:**
A
asfasdff 已提交
736

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

G
ge-yafang 已提交
741
**返回值:**
A
asfasdff 已提交
742

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

G
ge-yafang 已提交
747
**示例:**
A
asfasdff 已提交
748

G
ge-yafang 已提交
749
```js
G
ge-yafang 已提交
750 751 752 753 754 755 756 757 758
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 已提交
759
    console.log("appendNode " + JSON.stringify(node));
G
ge-yafang 已提交
760 761 762 763 764 765 766 767
    child1 = null;
    child2 = null;
    child3 = null;
    node = null;
} catch (e) {
    console.log("AppendChild " + e);
}
```
A
asfasdff 已提交
768 769


770
## KvStoreResultSet<sup>8+</sup> ##
A
asfasdff 已提交
771

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

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

776

777
### getCount<sup>8+</sup>
A
asfasdff 已提交
778

779
getCount(): number
A
asfasdff 已提交
780

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

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

G
ge-yafang 已提交
785
**返回值:**
A
asfasdff 已提交
786

787 788
| 类型   | 说明               |
| ------ | --------------    |
G
ge-yafang 已提交
789
| number |返回数据的总行数。          |
A
asfasdff 已提交
790

G
ge-yafang 已提交
791
**示例:**
A
asfasdff 已提交
792

G
ge-yafang 已提交
793
```js
G
ge-yafang 已提交
794 795 796 797
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
798
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
799 800
        resultSet = result;
    }).catch((err) => {
801
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
802 803
    });
    const count = resultSet.getCount();
G
ge-yafang 已提交
804
    console.log("getCount succeed:" + count);
G
ge-yafang 已提交
805
} catch (e) {
G
ge-yafang 已提交
806
    console.log("getCount failed: " + e);
G
ge-yafang 已提交
807 808
}
```
A
asfasdff 已提交
809

810
### getPosition<sup>8+</sup>
A
asfasdff 已提交
811

812
getPosition(): number
A
asfasdff 已提交
813 814 815

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

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

G
ge-yafang 已提交
818
**返回值:**
A
asfasdff 已提交
819

820 821 822
| 类型   | 说明               |
| ------ | --------------    |
| number |返回当前读取位置。   |
A
asfasdff 已提交
823

G
ge-yafang 已提交
824
**示例:**
A
asfasdff 已提交
825

G
ge-yafang 已提交
826
```js
G
ge-yafang 已提交
827 828 829 830
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
831
        console.log('getResultSet succeeded.');
G
ge-yafang 已提交
832 833
        resultSet = result;
    }).catch((err) => {
834
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
835 836
    });
    const position = resultSet.getPosition();
G
ge-yafang 已提交
837
    console.log("getPosition succeed:" + position);
G
ge-yafang 已提交
838
} catch (e) {
G
ge-yafang 已提交
839
    console.log("getPosition failed: " + e);
G
ge-yafang 已提交
840 841
}
```
A
asfasdff 已提交
842 843


844
### moveToFirst<sup>8+</sup>
A
asfasdff 已提交
845

846
moveToFirst(): boolean
A
asfasdff 已提交
847

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

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

G
ge-yafang 已提交
852
**返回值:**
A
asfasdff 已提交
853

854 855
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
856
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
857

G
ge-yafang 已提交
858
**示例:**
A
asfasdff 已提交
859

G
ge-yafang 已提交
860
```js
G
ge-yafang 已提交
861 862 863 864
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
865
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
866 867
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
868
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
869
    });
G
ge-yafang 已提交
870 871
    const moved1 = resultSet.moveToFirst();
    console.log("moveToFirst succeed: " + moved1);
G
ge-yafang 已提交
872
} catch (e) {
G
ge-yafang 已提交
873
    console.log("moveToFirst failed " + e);
G
ge-yafang 已提交
874 875
}
```
A
asfasdff 已提交
876 877


878
### moveToLast<sup>8+</sup>
A
asfasdff 已提交
879

880
moveToLast(): boolean
A
asfasdff 已提交
881

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

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

G
ge-yafang 已提交
886
**返回值:**
A
asfasdff 已提交
887

888 889
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
890
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
891

G
ge-yafang 已提交
892
**示例:**
A
asfasdff 已提交
893

G
ge-yafang 已提交
894
```js
G
ge-yafang 已提交
895 896 897 898
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
899
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
900 901
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
902
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
903
    });
G
ge-yafang 已提交
904 905
    const moved2 = resultSet.moveToLast();
    console.log("moveToLast succeed:" + moved2);
G
ge-yafang 已提交
906
} catch (e) {
G
ge-yafang 已提交
907
    console.log("moveToLast failed: " + e);
G
ge-yafang 已提交
908 909
}
```
A
asfasdff 已提交
910 911


912
### moveToNext<sup>8+</sup>
A
asfasdff 已提交
913

914
moveToNext(): boolean
A
asfasdff 已提交
915

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

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

G
ge-yafang 已提交
920
**返回值:**
A
asfasdff 已提交
921

922 923
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
924
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
925

G
ge-yafang 已提交
926
**示例:**
A
asfasdff 已提交
927

G
ge-yafang 已提交
928
```js
G
ge-yafang 已提交
929 930 931 932
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
933
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
934 935
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
936
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
937
    });
G
ge-yafang 已提交
938 939
    const moved3 = resultSet.moveToNext();
    console.log("moveToNext succeed: " + moved3);
G
ge-yafang 已提交
940
} catch (e) {
G
ge-yafang 已提交
941
    console.log("moveToNext failed: " + e);
G
ge-yafang 已提交
942 943
}
```
A
asfasdff 已提交
944 945


946
### moveToPrevious<sup>8+</sup>
A
asfasdff 已提交
947

948
moveToPrevious(): boolean
A
asfasdff 已提交
949

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

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

G
ge-yafang 已提交
954
**返回值:**
A
asfasdff 已提交
955

956 957
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
958
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
959

G
ge-yafang 已提交
960
**示例:**
A
asfasdff 已提交
961

G
ge-yafang 已提交
962
```js
G
ge-yafang 已提交
963 964 965 966
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
967
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
968 969
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
970
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
971
    });
G
ge-yafang 已提交
972 973
    const moved4 = resultSet.moveToPrevious();
    console.log("moveToPrevious succeed:" + moved4);
G
ge-yafang 已提交
974
} catch (e) {
G
ge-yafang 已提交
975
    console.log("moveToPrevious failed: " + e);
G
ge-yafang 已提交
976 977
}
```
A
asfasdff 已提交
978 979


980
### move<sup>8+</sup>
A
asfasdff 已提交
981

982
move(offset: number): boolean
A
asfasdff 已提交
983 984 985

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

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

G
ge-yafang 已提交
988
**参数:**
A
asfasdff 已提交
989

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

G
ge-yafang 已提交
994
**返回值:**
A
asfasdff 已提交
995

996 997
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
998
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
999

G
ge-yafang 已提交
1000
**示例:**
A
asfasdff 已提交
1001

G
ge-yafang 已提交
1002
```js
G
ge-yafang 已提交
1003 1004 1005 1006
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1007
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1008 1009
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1010
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1011
    });
G
ge-yafang 已提交
1012 1013
    const moved5 = resultSet.move();
    console.log("move succeed:" + moved5);
G
ge-yafang 已提交
1014
} catch (e) {
G
ge-yafang 已提交
1015
    console.log("move failed: " + e);
G
ge-yafang 已提交
1016 1017
}
```
A
asfasdff 已提交
1018 1019


1020
### moveToPosition<sup>8+</sup>
A
asfasdff 已提交
1021

1022
moveToPosition(position: number): boolean
A
asfasdff 已提交
1023 1024 1025

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

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

G
ge-yafang 已提交
1028
**参数:**
A
asfasdff 已提交
1029

1030 1031 1032
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| position  | number  | 是    |表示绝对位置。          |
A
asfasdff 已提交
1033

G
ge-yafang 已提交
1034
**返回值:**
A
asfasdff 已提交
1035

1036 1037
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1038
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
1039

G
ge-yafang 已提交
1040
**示例:**
A
asfasdff 已提交
1041

G
ge-yafang 已提交
1042
```js
G
ge-yafang 已提交
1043 1044 1045 1046
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1047
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1048 1049
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1050
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1051
    });
G
ge-yafang 已提交
1052 1053
    const moved6 = resultSet.moveToPosition();
    console.log("moveToPosition succeed: " + moved6);
G
ge-yafang 已提交
1054
} catch (e) {
G
ge-yafang 已提交
1055
    console.log("moveToPosition failed: " + e);
G
ge-yafang 已提交
1056 1057
}
```
A
asfasdff 已提交
1058 1059


1060
### isFirst<sup>8+</sup>
A
asfasdff 已提交
1061

1062
isFirst(): boolean
A
asfasdff 已提交
1063 1064 1065

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

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

G
ge-yafang 已提交
1068
**返回值:**
A
asfasdff 已提交
1069

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

G
ge-yafang 已提交
1074
**示例:**
A
asfasdff 已提交
1075

G
ge-yafang 已提交
1076
```js
G
ge-yafang 已提交
1077 1078 1079 1080
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1081
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1082 1083
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1084
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1085
    });
G
ge-yafang 已提交
1086 1087
    const isfirst = resultSet.isFirst();
    console.log("Check isFirst succeed:" + isfirst);
G
ge-yafang 已提交
1088
} catch (e) {
G
ge-yafang 已提交
1089
    console.log("Check isFirst failed: " + e);
G
ge-yafang 已提交
1090 1091
}
```
A
asfasdff 已提交
1092 1093


1094
### isLast<sup>8+</sup>
A
asfasdff 已提交
1095

1096
isLast(): boolean
A
asfasdff 已提交
1097 1098 1099

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

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

G
ge-yafang 已提交
1102
**返回值:**
A
asfasdff 已提交
1103

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

G
ge-yafang 已提交
1108
**示例:**
A
asfasdff 已提交
1109

G
ge-yafang 已提交
1110
```js
G
ge-yafang 已提交
1111 1112 1113 1114
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1115
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1116 1117
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1118
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1119
    });
G
ge-yafang 已提交
1120 1121
    const islast = resultSet.isLast();
    console.log("Check isLast succeed: " + islast);
G
ge-yafang 已提交
1122
} catch (e) {
G
ge-yafang 已提交
1123
    console.log("Check isLast failed: " + e);
G
ge-yafang 已提交
1124 1125
}
```
A
asfasdff 已提交
1126

1127
### isBeforeFirst<sup>8+</sup>
A
asfasdff 已提交
1128

1129
isBeforeFirst(): boolean
A
asfasdff 已提交
1130 1131 1132

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

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

G
ge-yafang 已提交
1135
**返回值:**
A
asfasdff 已提交
1136

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

G
ge-yafang 已提交
1141
**示例:**
A
asfasdff 已提交
1142

G
ge-yafang 已提交
1143
```js
G
ge-yafang 已提交
1144 1145 1146 1147
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1148
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1149 1150
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1151
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1152
    });
G
ge-yafang 已提交
1153 1154
    const isbeforefirst = resultSet.isBeforeFirst();
    console.log("Check isBeforeFirst succeed: " + isbeforefirst);
G
ge-yafang 已提交
1155
} catch (e) {
G
ge-yafang 已提交
1156
    console.log("Check isBeforeFirst failed: " + e);
G
ge-yafang 已提交
1157 1158
}
```
A
asfasdff 已提交
1159 1160


1161
### isAfterLast<sup>8+</sup>
A
asfasdff 已提交
1162

1163
isAfterLast(): boolean
A
asfasdff 已提交
1164 1165 1166

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

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

G
ge-yafang 已提交
1169
**返回值:**
A
asfasdff 已提交
1170

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

G
ge-yafang 已提交
1175
**示例:**
A
asfasdff 已提交
1176

G
ge-yafang 已提交
1177
```js
G
ge-yafang 已提交
1178 1179 1180 1181
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1182
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1183 1184
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1185
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1186
    });
G
ge-yafang 已提交
1187 1188
    const isafterlast = resultSet.isAfterLast();
    console.log("Check isAfterLast succeed:" + isafterlast);
G
ge-yafang 已提交
1189
} catch (e) {
G
ge-yafang 已提交
1190
    console.log("Check isAfterLast failed: " + e);
G
ge-yafang 已提交
1191 1192
}
```
A
asfasdff 已提交
1193 1194


1195
### getEntry<sup>8+</sup>
A
asfasdff 已提交
1196

1197
getEntry(): Entry
A
asfasdff 已提交
1198

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

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

G
ge-yafang 已提交
1203
**返回值:**
A
asfasdff 已提交
1204

1205 1206
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1207
| [Entry](#entry) |返回键值对。|
A
asfasdff 已提交
1208

G
ge-yafang 已提交
1209
**示例:**
A
asfasdff 已提交
1210

G
ge-yafang 已提交
1211
```js
G
ge-yafang 已提交
1212 1213 1214 1215
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1216
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1217 1218
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1219
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1220 1221
    });
    const entry  = resultSet.getEntry();
G
ge-yafang 已提交
1222
    console.log("getEntry succeed:" + JSON.stringify(entry));
G
ge-yafang 已提交
1223
} catch (e) {
G
ge-yafang 已提交
1224
    console.log("getEntry failed: " + e);
G
ge-yafang 已提交
1225 1226
}
```
A
asfasdff 已提交
1227 1228


1229
## Query<sup>8+</sup> ##
A
asfasdff 已提交
1230 1231 1232

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

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

1235
### constructor<sup>8+</sup>
1236 1237 1238

constructor() 

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

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

1243

1244
### reset<sup>8+</sup>
A
asfasdff 已提交
1245

1246
reset(): Query
A
asfasdff 已提交
1247

G
ge-yafang 已提交
1248
重置Query对象。
A
asfasdff 已提交
1249

G
ge-yafang 已提交
1250
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1251 1252


G
ge-yafang 已提交
1253
**返回值:**
A
asfasdff 已提交
1254

1255 1256
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1257
| [Query](#query8) |返回重置的Query对象。|
A
asfasdff 已提交
1258

G
ge-yafang 已提交
1259
**示例:**
A
asfasdff 已提交
1260

G
ge-yafang 已提交
1261
```js
G
ge-yafang 已提交
1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272
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 已提交
1273 1274


1275
### equalTo<sup>8+</sup>
A
asfasdff 已提交
1276

G
ge-yafang 已提交
1277
equalTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1278 1279 1280

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

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

G
ge-yafang 已提交
1283
**参数:**
A
asfasdff 已提交
1284

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

G
ge-yafang 已提交
1290
**返回值:**
A
asfasdff 已提交
1291

1292 1293
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1294
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1295

G
ge-yafang 已提交
1296
**示例:**
A
asfasdff 已提交
1297

G
ge-yafang 已提交
1298
```js
G
ge-yafang 已提交
1299 1300 1301 1302 1303 1304
try {
    let query = new distributedData.Query();
    query.equalTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1305
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1306 1307
}
```
A
asfasdff 已提交
1308 1309


1310
### notEqualTo<sup>8+</sup>
A
asfasdff 已提交
1311

1312
notEqualTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1313 1314 1315

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

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

G
ge-yafang 已提交
1318
**参数:**
A
asfasdff 已提交
1319

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

G
ge-yafang 已提交
1325
**返回值:**
A
asfasdff 已提交
1326

1327 1328
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1329
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1330

G
ge-yafang 已提交
1331
**示例:**
A
asfasdff 已提交
1332

G
ge-yafang 已提交
1333
```js
G
ge-yafang 已提交
1334 1335 1336 1337 1338 1339
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1340
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1341 1342
}
```
A
asfasdff 已提交
1343 1344


1345
### greaterThan<sup>8+</sup>
A
asfasdff 已提交
1346

1347
greaterThan(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1348 1349 1350

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

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

G
ge-yafang 已提交
1353
**参数:**
A
asfasdff 已提交
1354

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

G
ge-yafang 已提交
1360
**返回值:**
A
asfasdff 已提交
1361

1362 1363
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1364
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1365

G
ge-yafang 已提交
1366
**示例:**
A
asfasdff 已提交
1367

G
ge-yafang 已提交
1368
```js
G
ge-yafang 已提交
1369 1370 1371 1372 1373 1374
try {
    let query = new distributedData.Query();
    query.greaterThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1375
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1376 1377
}
```
A
asfasdff 已提交
1378 1379


1380
### lessThan<sup>8+</sup>
A
asfasdff 已提交
1381

1382
lessThan(field: string, value: number|string): Query
A
asfasdff 已提交
1383 1384 1385

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

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

G
ge-yafang 已提交
1388
**参数:**
A
asfasdff 已提交
1389

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

G
ge-yafang 已提交
1395
**返回值:**
A
asfasdff 已提交
1396

1397 1398
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1399
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1400

G
ge-yafang 已提交
1401
**示例:**
A
asfasdff 已提交
1402

G
ge-yafang 已提交
1403
```js
G
ge-yafang 已提交
1404 1405 1406 1407 1408 1409
try {
    let query = new distributedData.Query();
    query.lessThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1410
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1411 1412
}
```
A
asfasdff 已提交
1413 1414


1415
### greaterThanOrEqualTo<sup>8+</sup>
A
asfasdff 已提交
1416

1417
greaterThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1418 1419 1420

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

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

G
ge-yafang 已提交
1423
**参数:**
A
asfasdff 已提交
1424

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

G
ge-yafang 已提交
1430
**返回值:**
A
asfasdff 已提交
1431

1432 1433
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1434
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1435

G
ge-yafang 已提交
1436
**示例:**
A
asfasdff 已提交
1437

G
ge-yafang 已提交
1438
```js
G
ge-yafang 已提交
1439 1440 1441 1442 1443 1444
try {
    let query = new distributedData.Query();
    query.greaterThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1445
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1446 1447
}
```
A
asfasdff 已提交
1448 1449


1450
### lessThanOrEqualTo<sup>8+</sup>
A
asfasdff 已提交
1451

1452
lessThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1453 1454 1455

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

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

G
ge-yafang 已提交
1458
**参数:**
A
asfasdff 已提交
1459

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

G
ge-yafang 已提交
1465
**返回值:**
A
asfasdff 已提交
1466

1467 1468
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1469
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1470

G
ge-yafang 已提交
1471
**示例:**
A
asfasdff 已提交
1472

G
ge-yafang 已提交
1473
```js
G
ge-yafang 已提交
1474 1475 1476 1477 1478 1479
try {
    let query = new distributedData.Query();
    query.lessThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1480
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1481 1482
}
```
A
asfasdff 已提交
1483 1484


1485
### isNull<sup>8+</sup>
A
asfasdff 已提交
1486

1487
isNull(field: string): Query
A
asfasdff 已提交
1488 1489 1490

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

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

G
ge-yafang 已提交
1493
**参数:**
A
asfasdff 已提交
1494

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

G
ge-yafang 已提交
1499
**返回值:**
A
asfasdff 已提交
1500

1501 1502
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1503
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1504

G
ge-yafang 已提交
1505
**示例:**
A
asfasdff 已提交
1506

G
ge-yafang 已提交
1507
```js
G
ge-yafang 已提交
1508 1509 1510 1511 1512 1513
try {
    let query = new distributedData.Query();
    query.isNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1514
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1515 1516
}
```
A
asfasdff 已提交
1517 1518


1519
### inNumber<sup>8+</sup>
A
asfasdff 已提交
1520

1521
inNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1522 1523 1524

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

1525

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

G
ge-yafang 已提交
1528
**参数:**
A
asfasdff 已提交
1529

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

G
ge-yafang 已提交
1535
**返回值:**
A
asfasdff 已提交
1536

1537 1538
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1539
| [Query](#query8) |返回Query对象。|
1540

G
ge-yafang 已提交
1541
**示例:**
A
asfasdff 已提交
1542

G
ge-yafang 已提交
1543
```js
G
ge-yafang 已提交
1544 1545 1546 1547 1548 1549
try {
    let query = new distributedData.Query();
    query.inNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1550
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1551 1552
}
```
A
asfasdff 已提交
1553 1554


1555
### inString<sup>8+</sup>
A
asfasdff 已提交
1556

1557
inString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1558 1559 1560

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

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

G
ge-yafang 已提交
1563
**参数:**
A
asfasdff 已提交
1564

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

G
ge-yafang 已提交
1570
**返回值:**
A
asfasdff 已提交
1571

1572 1573
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1574
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1575

G
ge-yafang 已提交
1576
**示例:**
A
asfasdff 已提交
1577

G
ge-yafang 已提交
1578
```js
G
ge-yafang 已提交
1579 1580 1581 1582 1583 1584
try {
    let query = new distributedData.Query();
    query.inString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1585
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1586 1587
}
```
A
asfasdff 已提交
1588 1589


1590
### notInNumber<sup>8+</sup>
A
asfasdff 已提交
1591

1592
notInNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1593 1594 1595

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

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

G
ge-yafang 已提交
1598
**参数:**
A
asfasdff 已提交
1599

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

G
ge-yafang 已提交
1605
**返回值:**
A
asfasdff 已提交
1606

1607 1608
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1609
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1610

G
ge-yafang 已提交
1611
**示例:**
A
asfasdff 已提交
1612

G
ge-yafang 已提交
1613
```js
G
ge-yafang 已提交
1614 1615 1616 1617 1618 1619
try {
    let query = new distributedData.Query();
    query.notInNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1620
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1621 1622
}
```
A
asfasdff 已提交
1623 1624


1625
### notInString<sup>8+</sup>
A
asfasdff 已提交
1626

1627
notInString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1628 1629 1630

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

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

G
ge-yafang 已提交
1633
**参数:**
A
asfasdff 已提交
1634

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

G
ge-yafang 已提交
1640
**返回值:**
A
asfasdff 已提交
1641

1642 1643
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1644
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1645

G
ge-yafang 已提交
1646
**示例:**
A
asfasdff 已提交
1647

G
ge-yafang 已提交
1648
```js
G
ge-yafang 已提交
1649 1650 1651 1652 1653 1654
try {
    let query = new distributedData.Query();
    query.notInString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1655
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1656 1657
}
```
A
asfasdff 已提交
1658 1659


1660
### like<sup>8+</sup>
A
asfasdff 已提交
1661

1662
like(field: string, value: string): Query
A
asfasdff 已提交
1663 1664 1665

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

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

G
ge-yafang 已提交
1668
**参数:**
A
asfasdff 已提交
1669

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

G
ge-yafang 已提交
1675
**返回值:**
A
asfasdff 已提交
1676

1677 1678
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1679
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1680

G
ge-yafang 已提交
1681
**示例:**
A
asfasdff 已提交
1682

G
ge-yafang 已提交
1683
```js
G
ge-yafang 已提交
1684 1685 1686 1687 1688 1689
try {
    let query = new distributedData.Query();
    query.like("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1690
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1691 1692
}
```
A
asfasdff 已提交
1693 1694


1695
### unlike<sup>8+</sup>
A
asfasdff 已提交
1696

1697
unlike(field: string, value: string): Query
A
asfasdff 已提交
1698 1699 1700

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

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

G
ge-yafang 已提交
1703
**参数:**
A
asfasdff 已提交
1704

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

G
ge-yafang 已提交
1710
**返回值:**
A
asfasdff 已提交
1711

1712 1713
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1714
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1715

G
ge-yafang 已提交
1716
**示例:**
A
asfasdff 已提交
1717

G
ge-yafang 已提交
1718
```js
G
ge-yafang 已提交
1719 1720 1721 1722 1723 1724
try {
    let query = new distributedData.Query();
    query.unlike("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1725
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1726 1727
}
```
A
asfasdff 已提交
1728 1729


1730
### and<sup>8+</sup>
A
asfasdff 已提交
1731

1732
and(): Query
A
asfasdff 已提交
1733 1734 1735

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

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

G
ge-yafang 已提交
1738
**返回值:**
A
asfasdff 已提交
1739

1740 1741
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1742
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1743

G
ge-yafang 已提交
1744
**示例:**
A
asfasdff 已提交
1745

G
ge-yafang 已提交
1746
```js
G
ge-yafang 已提交
1747 1748 1749 1750 1751 1752 1753 1754
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 已提交
1755
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1756 1757
}
```
A
asfasdff 已提交
1758 1759


1760
### or<sup>8+</sup>
A
asfasdff 已提交
1761

1762
or(): Query
A
asfasdff 已提交
1763 1764 1765

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

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

G
ge-yafang 已提交
1768
**返回值:**
A
asfasdff 已提交
1769

1770 1771
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1772
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1773

G
ge-yafang 已提交
1774
**示例:**
A
asfasdff 已提交
1775

G
ge-yafang 已提交
1776
```js
G
ge-yafang 已提交
1777 1778 1779 1780 1781 1782 1783 1784
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 已提交
1785
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1786 1787
}
```
A
asfasdff 已提交
1788 1789


1790
### orderByAsc<sup>8+</sup>
A
asfasdff 已提交
1791

1792
orderByAsc(field: string): Query
A
asfasdff 已提交
1793 1794 1795

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

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

G
ge-yafang 已提交
1798
**参数:**
A
asfasdff 已提交
1799

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

G
ge-yafang 已提交
1804
**返回值:**
A
asfasdff 已提交
1805

1806 1807
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1808
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1809

G
ge-yafang 已提交
1810
**示例:**
A
asfasdff 已提交
1811

G
ge-yafang 已提交
1812
```js
G
ge-yafang 已提交
1813 1814 1815 1816 1817 1818 1819
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 已提交
1820
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1821 1822
}
```
A
asfasdff 已提交
1823 1824


1825
### orderByDesc<sup>8+</sup>
A
asfasdff 已提交
1826

1827
orderByDesc(field: string): Query
A
asfasdff 已提交
1828 1829 1830

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

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

G
ge-yafang 已提交
1833
**参数:**
A
asfasdff 已提交
1834

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

G
ge-yafang 已提交
1839
**返回值:**
A
asfasdff 已提交
1840

1841 1842
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1843
| [Query](#query8) |返回Query对象。|
1844

G
ge-yafang 已提交
1845
**示例:**
A
asfasdff 已提交
1846

G
ge-yafang 已提交
1847
```js
G
ge-yafang 已提交
1848 1849 1850 1851 1852 1853 1854
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 已提交
1855
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1856 1857
}
```
A
asfasdff 已提交
1858 1859


1860
### limit<sup>8+</sup>
A
asfasdff 已提交
1861

1862
limit(total: number, offset: number): Query
A
asfasdff 已提交
1863 1864 1865

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

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

G
ge-yafang 已提交
1868
**参数:**
A
asfasdff 已提交
1869

1870 1871 1872 1873
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| total  | number  | 是    |表示指定的结果数。  |
| offset | number  | 是    |表示起始位置。  |
A
asfasdff 已提交
1874

G
ge-yafang 已提交
1875
**返回值:**
A
asfasdff 已提交
1876

1877 1878
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1879
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1880

G
ge-yafang 已提交
1881
**示例:**
A
asfasdff 已提交
1882

G
ge-yafang 已提交
1883
```js
G
ge-yafang 已提交
1884 1885
let total = 10;
let offset = 1;
G
ge-yafang 已提交
1886 1887 1888
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
G
ge-yafang 已提交
1889
    query.limit(total, offset);
G
ge-yafang 已提交
1890 1891 1892
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1893
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1894 1895
}
```
A
asfasdff 已提交
1896 1897


1898
### isNotNull<sup>8+</sup>
A
asfasdff 已提交
1899

1900
isNotNull(field: string): Query
A
asfasdff 已提交
1901

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

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

G
ge-yafang 已提交
1906
**参数:**
A
asfasdff 已提交
1907

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

G
ge-yafang 已提交
1912
**返回值:**
A
asfasdff 已提交
1913

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

G
ge-yafang 已提交
1918
**示例:**
A
asfasdff 已提交
1919

G
ge-yafang 已提交
1920
```js
G
ge-yafang 已提交
1921 1922 1923 1924 1925 1926
try {
    let query = new distributedData.Query();
    query.isNotNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
1927
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1928 1929
}
```
A
asfasdff 已提交
1930 1931


1932
### beginGroup<sup>8+</sup>
A
asfasdff 已提交
1933

1934
beginGroup(): Query
A
asfasdff 已提交
1935 1936 1937

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

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

G
ge-yafang 已提交
1940
**返回值:**
A
asfasdff 已提交
1941

1942 1943
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1944
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1945

G
ge-yafang 已提交
1946
**示例:**
A
asfasdff 已提交
1947

G
ge-yafang 已提交
1948
```js
G
ge-yafang 已提交
1949 1950 1951 1952 1953 1954 1955 1956
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 已提交
1957
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1958 1959
}
```
A
asfasdff 已提交
1960 1961


1962
### endGroup<sup>8+</sup>
A
asfasdff 已提交
1963

1964
endGroup(): Query
A
asfasdff 已提交
1965 1966 1967

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

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

G
ge-yafang 已提交
1970
**返回值:**
A
asfasdff 已提交
1971

1972 1973
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1974
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1975

G
ge-yafang 已提交
1976
**示例:**
A
asfasdff 已提交
1977

G
ge-yafang 已提交
1978
```js
G
ge-yafang 已提交
1979 1980 1981 1982 1983 1984 1985 1986
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 已提交
1987
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
1988 1989
}
```
A
asfasdff 已提交
1990 1991


1992
### prefixKey<sup>8+</sup>
A
asfasdff 已提交
1993

1994
prefixKey(prefix: string): Query
A
asfasdff 已提交
1995 1996 1997

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

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

G
ge-yafang 已提交
2000
**参数:**
A
asfasdff 已提交
2001

2002 2003 2004
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
2005

G
ge-yafang 已提交
2006
**返回值:**
A
asfasdff 已提交
2007

2008 2009
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2010
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
2011

G
ge-yafang 已提交
2012
**示例:**
A
asfasdff 已提交
2013

G
ge-yafang 已提交
2014
```js
G
ge-yafang 已提交
2015 2016 2017 2018 2019 2020 2021
try {
    let query = new distributedData.Query();
    query.prefixKey("$.name");
    query.prefixKey("0");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
2022
    console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
2023 2024
}
```
A
asfasdff 已提交
2025 2026


2027
### setSuggestIndex<sup>8+</sup>
A
asfasdff 已提交
2028

2029
setSuggestIndex(index: string): Query
A
asfasdff 已提交
2030 2031 2032

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

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

G
ge-yafang 已提交
2035
**参数:**
A
asfasdff 已提交
2036

2037 2038 2039
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
2040

G
ge-yafang 已提交
2041
**返回值:**
A
asfasdff 已提交
2042

2043 2044
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2045
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
2046

G
ge-yafang 已提交
2047
**示例:**
A
asfasdff 已提交
2048

G
ge-yafang 已提交
2049
```js
G
ge-yafang 已提交
2050 2051 2052 2053 2054 2055 2056
try {
    let query = new distributedData.Query();
    query.setSuggestIndex("$.name");
    query.setSuggestIndex("0");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
W
wangkai 已提交
2057
   console.log("duplicated calls should be ok :" + e);
G
ge-yafang 已提交
2058 2059
}
```
A
asfasdff 已提交
2060 2061


2062
### deviceId<sup>8+</sup>
A
fix up  
asfasdff 已提交
2063

2064
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2065 2066 2067

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

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

G
ge-yafang 已提交
2070
**参数:**
A
fix up  
asfasdff 已提交
2071

2072 2073
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2074
| deviceId | string  | 是    |指示查询的设备ID。   |
2075

A
fix up  
asfasdff 已提交
2076

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

2079 2080
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2081
| [Query](#query8) |返回Query对象。|
A
fix up  
asfasdff 已提交
2082

G
ge-yafang 已提交
2083
**示例:**
A
fix up  
asfasdff 已提交
2084

G
ge-yafang 已提交
2085
```js
G
ge-yafang 已提交
2086 2087 2088 2089 2090 2091 2092 2093
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 已提交
2094 2095


2096
### getSqlLike<sup>8+</sup>
A
fix up  
asfasdff 已提交
2097

2098
getSqlLike():string
A
fix up  
asfasdff 已提交
2099

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

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

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

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

G
ge-yafang 已提交
2110
**示例:**
A
fix up  
asfasdff 已提交
2111

G
ge-yafang 已提交
2112
```js
G
ge-yafang 已提交
2113 2114 2115 2116 2117
try {
    let query = new distributedData.Query();
    let sql1 = query.getSqlLike();
    console.log("GetSqlLike sql=" + sql1);
} catch (e) {
W
wangkai 已提交
2118
    console.log("duplicated calls should be ok : " + e);
G
ge-yafang 已提交
2119 2120
}
```
A
fix up  
asfasdff 已提交
2121 2122


2123
## KVStore
Z
zengyawen 已提交
2124

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

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

2129
### put
Z
zengyawen 已提交
2130

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

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

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

G
ge-yafang 已提交
2137
**参数:**
A
asfasdff 已提交
2138

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

G
ge-yafang 已提交
2145
**示例:**
A
asfasdff 已提交
2146

G
ge-yafang 已提交
2147
```js
G
ge-yafang 已提交
2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162
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 已提交
2163 2164


2165
### put
A
asfasdff 已提交
2166

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

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

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

G
ge-yafang 已提交
2173
**参数:**
A
asfasdff 已提交
2174

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

G
ge-yafang 已提交
2180
**返回值:**
A
asfasdff 已提交
2181

2182 2183
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2184
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2185

G
ge-yafang 已提交
2186
**示例:**
A
asfasdff 已提交
2187

G
ge-yafang 已提交
2188
```js
G
ge-yafang 已提交
2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201
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 已提交
2202

2203
### delete
A
asfasdff 已提交
2204

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

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

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

G
ge-yafang 已提交
2211
**参数:**
A
asfasdff 已提交
2212

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

G
ge-yafang 已提交
2218
**示例:**
A
asfasdff 已提交
2219

G
ge-yafang 已提交
2220
```js
G
ge-yafang 已提交
2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231
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 已提交
2232
            if (err != undefined) {
G
ge-yafang 已提交
2233
                console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2234 2235
                return;
            }
G
ge-yafang 已提交
2236
            console.log("delete success");
A
asfasdff 已提交
2237
        });
G
ge-yafang 已提交
2238 2239 2240 2241 2242
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2243

2244
### delete
A
asfasdff 已提交
2245

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

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

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

G
ge-yafang 已提交
2252
**参数:**
A
asfasdff 已提交
2253

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

G
ge-yafang 已提交
2258
**返回值:**
A
asfasdff 已提交
2259

2260 2261
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2262
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2263

G
ge-yafang 已提交
2264
**示例:**
A
asfasdff 已提交
2265

G
ge-yafang 已提交
2266
```js
G
ge-yafang 已提交
2267 2268 2269 2270 2271 2272 2273 2274
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 已提交
2275
        }).catch((err) => {
G
ge-yafang 已提交
2276
            console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2277
        });
G
ge-yafang 已提交
2278 2279 2280 2281 2282 2283 2284
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
W
wangkai 已提交
2285 2286 2287

### delete<sup>9+</sup>

2288
delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;void&gt;)
W
wangkai 已提交
2289

2290 2291 2292
从数据库中删除符合predicates条件的键值对,使用callback异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
2293 2294 2295 2296 2297 2298 2299

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
2300
| predicates    | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。|
W
wangkai 已提交
2301 2302 2303 2304 2305
| callback  | AsyncCallback&lt;void&gt;  | 是    |回调函数。   |

**示例:**

```js
2306
import dataSharePredicates from '@ohos.data.dataSharePredicates';
W
wangkai 已提交
2307 2308
let kvStore;
try {
W
wangkai 已提交
2309 2310
	let predicates = new dataSharePredicates.DataSharePredicates();
	kvStore.delete(predicates, function (err, data) {
W
wangkai 已提交
2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323
		if (err == undefined) {
			console.log('delete success');
		} else {
			console.log('delete fail' + err);
		}
    });  
} catch (e) {
	console.log('An unexpected error occurred. Error:' + e);
}
```

### delete<sup>9+</sup>

W
wangkai 已提交
2324
delete(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;void&gt;
W
wangkai 已提交
2325

2326 2327 2328
从数据库中删除符合predicates条件的键值对,使用Promise异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
2329 2330 2331 2332 2333 2334 2335

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
2336
| predicates    | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。|
W
wangkai 已提交
2337 2338 2339 2340 2341 2342


**返回值:**

| 类型    | 说明       |
| ------  | -------   |
2343
| Promise&lt;void&gt; |无返回结果的Promise对象。|
W
wangkai 已提交
2344 2345 2346 2347

**示例:**

```js
2348
import dataSharePredicates from '@ohos.data.dataSharePredicates';
W
wangkai 已提交
2349 2350
let kvStore;
try {
W
wangkai 已提交
2351
	let predicates = new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
2352 2353 2354 2355 2356
	let arr = ["name"];
	predicates.inKeys(arr);
	kvStore.put("name", "bob").then((data) => {
		console.log('put success' + JSON.stringify(data));
		kvStore.delete(predicates).then((data) => {
W
wangkai 已提交
2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369
			console.log('delete success');
		}).catch((err) => {
			console.log('delete fail' + JSON.stringify(err));
		});
	}) .catch((err) => {
		console.log(' put fail' + err);
	});
}catch (e) {
	console.log("An unexpected error occurred. Error:" + e);
}

```

Z
zuojiangjiang 已提交
2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396
### backup<sup>9+</sup>

backup(file:string, callback: AsyncCallback&lt;void&gt;):void

以指定名称备份数据库,使用callback异步回调。

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

**参数:**

| 参数名   | 参数类型                  | 必填 | 说明                                                         |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file     | string                    | 是   | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当以指定名称备份数据库成功,err为undefined,否则为错误对象。 |

**示例:**

```js
let kvStore;
let file = "BK001";
try {
    kvStore.backup(file, (err, data) => {
        if (err) {
            console.info("backup err : " + err);
        } else {
            console.info("backup data : " + data);
        }
Z
zuojiangjiang 已提交
2397
    });
Z
zuojiangjiang 已提交
2398
} catch (e) {
Z
zuojiangjiang 已提交
2399
    console.log("An unexpected error occurred. Error : " + e);
Z
zuojiangjiang 已提交
2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429
}

```

### backup<sup>9+</sup>

backup(file:string): Promise&lt;void&gt;

以指定名称备份数据库,使用Promise异步回调。

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

**参数:**

| 参数名 | 参数类型 | 必填 | 说明                                                         |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file   | string   | 是   | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

**示例:**

```js
let kvStore;
let file = "BK001";
try {
Z
zuojiangjiang 已提交
2430
    kvStore.backup(file).then((data) => {
Z
zuojiangjiang 已提交
2431 2432 2433 2434 2435
        console.info("backup data : " + data);
    }).catch((err) => {
        console.info("backup err : " + err);
    });
} catch (e) {
Z
zuojiangjiang 已提交
2436
    console.log("An unexpected error occurred. Error : " + e);
Z
zuojiangjiang 已提交
2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582
}

```

### restore<sup>9+</sup>

restore(file:string, callback: AsyncCallback&lt;void&gt;):void

从指定的数据库文件恢复数据库,使用callback异步回调。

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

**参数:**

| 参数名   | 参数类型                  | 必填 | 说明                                                         |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file     | string                    | 是   | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当从指定的数据库文件恢复数据库成功,err为undefined,否则为错误对象。 |

**示例:**

```js
let kvStore;
let file = "BK001";
try {
    kvStore.restore(file, (err, data) => {
        if (err) {
            console.info("restore err : " + err);
        } else {
            console.info("restore data : " + data);
        }
    });
} catch (e) {
    console.log("An unexpected error occurred. Error : " + e);
}

```

### restore<sup>9+</sup>

restore(file:string): Promise&lt;void&gt;

从指定的数据库文件恢复数据库,使用Promise异步回调。

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

**参数:**

| 参数名 | 参数类型 | 必填 | 说明                                                         |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file   | string   | 是   | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

**示例:**

```js
let kvStore;
let file = "BK001";
try {
    kvStore.restore(file).then((data) => {
        console.info("restore data : " + data);
    }).catch((err) => {
        console.info("restore err : " + err);
    });
} catch (e) {
    console.log("An unexpected error occurred. Error : " + e);
}

```

### deleteBackup<sup>9+</sup>

deleteBackup(files:Array&lt;string&gt;, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;):void

根据指定名称删除备份文件,使用callback异步回调。

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

**参数:**

| 参数名   | 参数类型                                           | 必填 | 说明                                                         |
| -------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
| files    | Array&lt;string&gt;                                | 是   | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是   | 回调函数,返回删除备份的文件名及其处理结果。                 |

**示例:**

```js
let kvStore;
let files = ["BK001", "BK002"];
try {
    kvStore.deleteBackup(files, (err, data) => {
        if (err) {
            console.info("deleteBackup err : " + err);
        } else {
            console.info("deleteBackup data : " + data);
        }
    });
} catch (e) {
    console.log("An unexpected error occurred. Error : " + e);
}

```

### deleteBackup<sup>9+</sup>

deleteBackup(files:Array&lt;string&gt;): Promise&lt;Array&lt;[string, number]&gt;&gt;

根据指定名称删除备份文件,使用Promise异步回调。

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

**参数:**

| 参数名 | 参数类型 | 必填 | 说明                                                         |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| files  | Array&lt;string&gt;   | 是   | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |

**返回值:**

| 类型                                         | 说明                                            |
| -------------------------------------------- | ----------------------------------------------- |
| Promise&lt;Array&lt;[string, number]&gt;&gt; | Promise对象,返回删除备份的文件名及其处理结果。 |

**示例:**

```js
let kvStore;
let files = ["BK001", "BK002"];
try {
    kvStore.deleteBackup(files).then((data) => {
        console.info("deleteBackup data : " + data);
    }).catch((err) => {
        console.info("deleteBackup err : " + err);
    })
} catch (e) {
    console.log("An unexpected error occurred. Error : " + e);
}

```

G
ge-yafang 已提交
2583
### on('dataChange')
A
asfasdff 已提交
2584

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

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

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

G
ge-yafang 已提交
2591
**参数:**
A
asfasdff 已提交
2592

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

G
ge-yafang 已提交
2599
**示例:**
A
asfasdff 已提交
2600

G
ge-yafang 已提交
2601
```js
G
ge-yafang 已提交
2602 2603 2604 2605 2606
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
A
asfasdff 已提交
2607 2608


G
ge-yafang 已提交
2609
### on('syncComplete')
A
asfasdff 已提交
2610

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

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

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

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

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

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

2626
```js
G
ge-yafang 已提交
2627 2628
let kvStore;
kvStore.on('syncComplete', function (data) {
2629
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2630 2631
});
```
A
asfasdff 已提交
2632

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

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

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

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

G
ge-yafang 已提交
2641
**参数:**
A
asfasdff 已提交
2642

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

G
ge-yafang 已提交
2648
**示例:**
A
asfasdff 已提交
2649

G
ge-yafang 已提交
2650
```js
Z
zuojiangjiang 已提交
2651 2652
let kvStore;
class KvstoreModel {
2653 2654 2655 2656
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
Z
zuojiangjiang 已提交
2657 2658
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
2659 2660 2661
        }
    }
    unsubscribeDataChange() {
Z
zuojiangjiang 已提交
2662 2663
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
2664 2665 2666
        }
    }
}
G
ge-yafang 已提交
2667
```
A
asfasdff 已提交
2668

W
wangkai 已提交
2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686
### off('syncComplete')<sup>9+</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
Z
zuojiangjiang 已提交
2687 2688
let kvStore;
class KvstoreModel {
2689 2690 2691 2692
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
2693 2694
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
2695 2696 2697
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
2698 2699
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
2700 2701
        }
    }
W
wangkai 已提交
2702 2703 2704
}
```

A
asfasdff 已提交
2705

2706
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2707

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

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

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

G
ge-yafang 已提交
2714
**参数:**
A
asfasdff 已提交
2715

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

G
ge-yafang 已提交
2721
**示例:**
A
asfasdff 已提交
2722

G
ge-yafang 已提交
2723
```js
G
ge-yafang 已提交
2724 2725 2726 2727 2728 2729 2730 2731 2732 2733
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 已提交
2734 2735
            }
        }
G
ge-yafang 已提交
2736
        entries.push(entry);
A
asfasdff 已提交
2737
    }
G
ge-yafang 已提交
2738 2739 2740
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
2741
        kvStore.getEntries('batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
2742
            console.log('getEntries success');
2743 2744
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
2745 2746 2747
        });
    });
}catch(e) {
G
ge-yafang 已提交
2748
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2749 2750
}
```
A
asfasdff 已提交
2751 2752


2753
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2754

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

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

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

G
ge-yafang 已提交
2761
**参数:**
A
asfasdff 已提交
2762

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

G
ge-yafang 已提交
2767
**返回值:**
A
asfasdff 已提交
2768

2769 2770
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2771
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2772

G
ge-yafang 已提交
2773
**示例:**
A
asfasdff 已提交
2774

G
ge-yafang 已提交
2775
```js
G
ge-yafang 已提交
2776 2777 2778 2779 2780 2781 2782 2783 2784 2785
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 已提交
2786 2787
            }
        }
G
ge-yafang 已提交
2788 2789 2790 2791 2792
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
2793
        kvStore.getEntries('batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
2794 2795
            console.log('getEntries success');
            console.log('PutBatch ' + JSON.stringify(entries));
A
asfasdff 已提交
2796
        }).catch((err) => {
G
ge-yafang 已提交
2797
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
2798
        });
G
ge-yafang 已提交
2799 2800 2801 2802
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
G
ge-yafang 已提交
2803
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2804 2805
}
```
A
asfasdff 已提交
2806

W
wangkai 已提交
2807 2808 2809
### putBatch<sup>9+</sup>

putBatch(value: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;void&gt;): void
G
ge-yafang 已提交
2810

2811 2812 2813
将值写入KvStore数据库,使用callback异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
2814 2815 2816 2817 2818 2819 2820

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2821
| value   |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是    |表示要插入的数据。  |
W
wangkai 已提交
2822 2823 2824 2825 2826 2827 2828
| callback |Asyncallback&lt;void&gt; |是     |回调函数。 |

**示例:**

```js
let kvStore;
try {
W
wangkai 已提交
2829 2830 2831 2832 2833 2834 2835 2836 2837 2838
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr, async function (err,data) {
W
wangkai 已提交
2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851
                console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('putBatch e ' + JSON.stringify(e));
}
```

### putBatch<sup>9+</sup>

putBatch(value: Array&lt;ValuesBucket&gt;): Promise&lt;void&gt;

2852 2853 2854
将valuesbucket类型的值写入KvStore数据库,使用Promise异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
2855 2856 2857 2858 2859 2860 2861

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2862
| value  |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是    |表示要插入的数据。  |
W
wangkai 已提交
2863 2864 2865 2866 2867

**返回值:**

| 类型    | 说明       |
| ------  | -------   |
2868
| Promise&lt;void&gt; |五返回结果的Promise对象。|
W
wangkai 已提交
2869 2870 2871 2872 2873 2874

**示例:**

```js
let kvStore;
try {
W
wangkai 已提交
2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2886 2887 2888 2889 2890 2891 2892 2893
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + JSON.stringify(e));
}

```
A
asfasdff 已提交
2894

2895
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2896

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

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

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

G
ge-yafang 已提交
2903
**参数:**
A
asfasdff 已提交
2904

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

G
ge-yafang 已提交
2910
**示例:**
A
asfasdff 已提交
2911

G
ge-yafang 已提交
2912
```js
G
ge-yafang 已提交
2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923
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 已提交
2924 2925
            }
        }
G
ge-yafang 已提交
2926 2927
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2928
    }
G
ge-yafang 已提交
2929 2930 2931
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2932
        kvStore.deleteBatch(keys, async function (err,data) {
G
ge-yafang 已提交
2933 2934 2935 2936 2937 2938 2939
            console.log('deleteBatch success');
        });
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2940 2941


2942
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2943

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

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

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

G
ge-yafang 已提交
2950
**参数:**
A
asfasdff 已提交
2951

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

G
ge-yafang 已提交
2956
**返回值:**
A
asfasdff 已提交
2957

2958 2959
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2960
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2961

G
ge-yafang 已提交
2962
**示例:**
A
asfasdff 已提交
2963

G
ge-yafang 已提交
2964
```js
G
ge-yafang 已提交
2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975
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 已提交
2976 2977
            }
        }
G
ge-yafang 已提交
2978 2979 2980 2981 2982 2983
        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 已提交
2984
        kvStore.deleteBatch(keys).then((err) => {
G
ge-yafang 已提交
2985
            console.log('deleteBatch success');
A
asfasdff 已提交
2986
        }).catch((err) => {
G
ge-yafang 已提交
2987
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2988
        });
G
ge-yafang 已提交
2989 2990 2991 2992 2993 2994 2995
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2996 2997


2998
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
2999

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

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

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

G
ge-yafang 已提交
3006
**参数:**
A
asfasdff 已提交
3007

3008 3009 3010
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
3011

G
ge-yafang 已提交
3012
**示例:**
A
asfasdff 已提交
3013

G
ge-yafang 已提交
3014
```js
G
ge-yafang 已提交
3015 3016 3017 3018 3019 3020 3021 3022 3023
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 已提交
3024 3025
            }
        }
G
ge-yafang 已提交
3026
        entries.push(entry);
A
asfasdff 已提交
3027
    }
G
ge-yafang 已提交
3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039
    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 已提交
3040
        kvStore.putBatch(entries, async function (err,data) {
G
ge-yafang 已提交
3041
            console.log('putBatch success');
A
asfasdff 已提交
3042
        });
G
ge-yafang 已提交
3043 3044 3045 3046 3047
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
3048 3049


3050
### startTransaction<sup>8+</sup>
A
asfasdff 已提交
3051

3052
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
3053

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

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

G
ge-yafang 已提交
3058
**返回值:**
A
asfasdff 已提交
3059

3060 3061
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3062
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3063

G
ge-yafang 已提交
3064
**示例:**
A
asfasdff 已提交
3065

G
ge-yafang 已提交
3066
```js
G
ge-yafang 已提交
3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082
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 已提交
3083 3084


3085
### commit<sup>8+</sup>
A
asfasdff 已提交
3086

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

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

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

G
ge-yafang 已提交
3093
**参数:**
A
asfasdff 已提交
3094

3095 3096 3097
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
3098

G
ge-yafang 已提交
3099
**示例:**
A
asfasdff 已提交
3100

G
ge-yafang 已提交
3101
```js
G
ge-yafang 已提交
3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114
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 已提交
3115 3116


3117
### commit<sup>8+</sup>
A
asfasdff 已提交
3118

3119
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
3120

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

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

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

3127 3128
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3129
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3130

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

G
ge-yafang 已提交
3133
```js
G
ge-yafang 已提交
3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144
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 已提交
3145 3146


3147
### rollback<sup>8+</sup>
A
asfasdff 已提交
3148

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

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

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

G
ge-yafang 已提交
3155
**参数:**
A
asfasdff 已提交
3156

3157 3158 3159
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
3160

G
ge-yafang 已提交
3161
**示例:**
A
asfasdff 已提交
3162

G
ge-yafang 已提交
3163
```js
G
ge-yafang 已提交
3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176
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 已提交
3177 3178


3179
### rollback<sup>8+</sup>
A
asfasdff 已提交
3180

3181
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
3182

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

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

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

3189 3190
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3191
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3192

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

G
ge-yafang 已提交
3195
```js
G
ge-yafang 已提交
3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206
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 已提交
3207 3208


3209
### enableSync<sup>8+</sup>
A
asfasdff 已提交
3210

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

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

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

G
ge-yafang 已提交
3217
**参数:**
A
asfasdff 已提交
3218

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

G
ge-yafang 已提交
3224
**示例:**
A
asfasdff 已提交
3225

G
ge-yafang 已提交
3226
```js
G
ge-yafang 已提交
3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239
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 已提交
3240 3241


3242
### enableSync<sup>8+</sup>
A
asfasdff 已提交
3243

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

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

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

G
ge-yafang 已提交
3250
**参数:**
A
asfasdff 已提交
3251

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

G
ge-yafang 已提交
3256
**返回值:**
A
asfasdff 已提交
3257

3258 3259
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3260
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3261

G
ge-yafang 已提交
3262
**示例:**
A
asfasdff 已提交
3263

G
ge-yafang 已提交
3264
```js
G
ge-yafang 已提交
3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275
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 已提交
3276 3277


3278
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
3279

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

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

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

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

3288 3289 3290 3291 3292
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
3293

G
ge-yafang 已提交
3294
**示例:**
A
asfasdff 已提交
3295

G
ge-yafang 已提交
3296
```js
G
ge-yafang 已提交
3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307
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 已提交
3308 3309


3310
### setSyncRange<sup>8+</sup>
A
asfasdff 已提交
3311

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

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

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

G
ge-yafang 已提交
3318
**参数:**
A
asfasdff 已提交
3319

3320 3321 3322 3323 3324
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
3325

G
ge-yafang 已提交
3326
**返回值:**
A
asfasdff 已提交
3327

3328 3329
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3330
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3331

G
ge-yafang 已提交
3332
**示例:**
A
asfasdff 已提交
3333

G
ge-yafang 已提交
3334
```js
G
ge-yafang 已提交
3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347
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 已提交
3348 3349


3350
## SubscribeType
Z
zengyawen 已提交
3351

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

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

G
ge-yafang 已提交
3356
| 名称  | 值   | 说明                    |
3357 3358 3359 3360 3361 3362
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
3363 3364 3365

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

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

3368 3369 3370 3371 3372 3373 3374 3375
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
3376 3377 3378

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

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

3381 3382 3383 3384 3385 3386 3387
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
3388

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

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

3393 3394 3395
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
G
ge-yafang 已提交
3396
| value | Uint8Array \| string \| number \| boolean| 是  |  是 |值。   |
3397 3398

## ValueType
Z
zengyawen 已提交
3399

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

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

G
ge-yafang 已提交
3404
| 名称  | 值   | 说明                    |
3405 3406 3407 3408 3409 3410 3411 3412 3413
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
3414

G
ge-yafang 已提交
3415 3416 3417 3418 3419
单版本数据库,继承自[KVStore](#kvstore)数据库,提供查询数据和同步数据的方法。

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

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

3421
### get
Z
zengyawen 已提交
3422

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

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

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

G
ge-yafang 已提交
3429
**参数:**
A
asfasdff 已提交
3430

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

G
ge-yafang 已提交
3436
**示例:**
A
asfasdff 已提交
3437

G
ge-yafang 已提交
3438
```js
G
ge-yafang 已提交
3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450
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 已提交
3451
        });
G
ge-yafang 已提交
3452 3453 3454 3455 3456
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3457 3458


3459
### get
A
asfasdff 已提交
3460

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

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

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

G
ge-yafang 已提交
3467
**参数:**
A
asfasdff 已提交
3468

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

A
asfasdff 已提交
3473

G
ge-yafang 已提交
3474
**返回值:**
A
asfasdff 已提交
3475

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

G
ge-yafang 已提交
3480
**示例:**
A
asfasdff 已提交
3481

G
ge-yafang 已提交
3482
```js
G
ge-yafang 已提交
3483 3484 3485 3486 3487 3488 3489 3490
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 已提交
3491
        }).catch((err) => {
G
ge-yafang 已提交
3492
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3493
        });
G
ge-yafang 已提交
3494 3495 3496 3497 3498 3499 3500
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3501

3502
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3503

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

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

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

G
ge-yafang 已提交
3510
**参数:**
A
asfasdff 已提交
3511

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

G
ge-yafang 已提交
3517
**示例:**
A
asfasdff 已提交
3518

G
ge-yafang 已提交
3519
```js
G
ge-yafang 已提交
3520 3521 3522 3523 3524 3525 3526 3527 3528 3529
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 已提交
3530 3531
            }
        }
G
ge-yafang 已提交
3532
        entries.push(entry);
A
asfasdff 已提交
3533
    }
G
ge-yafang 已提交
3534 3535
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
3536
        kvStore.getEntries('batch_test_number_key', function (err,entries) {
G
ge-yafang 已提交
3537
            console.log('getEntries success');
3538 3539
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3540 3541 3542 3543 3544 3545
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3546 3547


3548
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3549

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

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

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

G
ge-yafang 已提交
3556
**参数:**
A
asfasdff 已提交
3557

3558 3559 3560
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3561

G
ge-yafang 已提交
3562
**返回值:**
A
asfasdff 已提交
3563

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

G
ge-yafang 已提交
3568
**示例:**
A
asfasdff 已提交
3569

G
ge-yafang 已提交
3570
```js
G
ge-yafang 已提交
3571 3572 3573 3574 3575 3576 3577 3578 3579 3580
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 已提交
3581 3582
            }
        }
G
ge-yafang 已提交
3583 3584 3585 3586 3587
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
3588
        kvStore.getEntries('batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
3589
            console.log('getEntries success');
3590 3591 3592 3593
            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 已提交
3594
        }).catch((err) => {
G
ge-yafang 已提交
3595
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3596
        });
G
ge-yafang 已提交
3597 3598 3599 3600 3601 3602 3603
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3604 3605


3606
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3607

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

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

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

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

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

G
ge-yafang 已提交
3621
**示例:**
A
asfasdff 已提交
3622

G
ge-yafang 已提交
3623
```js
G
ge-yafang 已提交
3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634
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 已提交
3635 3636
            }
        }
G
ge-yafang 已提交
3637
        entries.push(entry);
A
asfasdff 已提交
3638
    }
G
ge-yafang 已提交
3639 3640 3641 3642 3643
    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");
3644
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
3645
            console.log('getEntries success');
3646 3647
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
3648 3649 3650 3651 3652 3653 3654
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3655 3656


3657
### getEntries<sup>8+</sup>
A
asfasdff 已提交
3658

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

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

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

G
ge-yafang 已提交
3665
**参数:**
A
asfasdff 已提交
3666

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

G
ge-yafang 已提交
3671
**返回值:**
A
asfasdff 已提交
3672

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

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

G
ge-yafang 已提交
3679
```js
W
wangkai 已提交
3680
let kvStore;
G
ge-yafang 已提交
3681 3682 3683 3684 3685 3686 3687 3688 3689 3690
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 已提交
3691 3692
            }
        }
G
ge-yafang 已提交
3693 3694 3695 3696 3697 3698 3699
        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");
3700
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
3701
            console.log('getEntries success');
A
asfasdff 已提交
3702
        }).catch((err) => {
G
ge-yafang 已提交
3703
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3704
        });
G
ge-yafang 已提交
3705 3706 3707 3708 3709 3710 3711 3712
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3713 3714


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

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

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

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

G
ge-yafang 已提交
3723
**参数:**
A
asfasdff 已提交
3724

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

G
ge-yafang 已提交
3730
**示例:**
A
asfasdff 已提交
3731

G
ge-yafang 已提交
3732
```js
G
ge-yafang 已提交
3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743
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 已提交
3744 3745
            }
        }
G
ge-yafang 已提交
3746
        entries.push(entry);
A
asfasdff 已提交
3747
    }
G
ge-yafang 已提交
3748 3749
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
W
wangkai 已提交
3750
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
3751
            console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
3752 3753 3754 3755 3756 3757 3758 3759 3760 3761
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('GetResultSet closeResultSet success');
            })
        });
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3762 3763


3764
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3765

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

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

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

G
ge-yafang 已提交
3772
**参数:**
A
asfasdff 已提交
3773

3774 3775 3776
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3777

G
ge-yafang 已提交
3778
**返回值:**
A
asfasdff 已提交
3779

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

G
ge-yafang 已提交
3784
**示例:**
A
asfasdff 已提交
3785

G
ge-yafang 已提交
3786
```js
G
ge-yafang 已提交
3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797
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 已提交
3798 3799
            }
        }
G
ge-yafang 已提交
3800
        entries.push(entry);
A
asfasdff 已提交
3801
    }
G
ge-yafang 已提交
3802 3803 3804 3805 3806 3807
    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 已提交
3808
        console.log('GetResult getResultSet succeed.');
G
ge-yafang 已提交
3809 3810
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3811
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3812 3813 3814 3815 3816 3817 3818 3819 3820 3821
    });
    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 已提交
3822 3823


3824
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3825

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

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

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

G
ge-yafang 已提交
3832
**参数:**
A
asfasdff 已提交
3833

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

G
ge-yafang 已提交
3839
**示例:**
A
asfasdff 已提交
3840

G
ge-yafang 已提交
3841
```js
G
ge-yafang 已提交
3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852
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 已提交
3853 3854
            }
        }
G
ge-yafang 已提交
3855
        entries.push(entry);
A
asfasdff 已提交
3856
    }
G
ge-yafang 已提交
3857 3858 3859 3860
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3861
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
3862
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3863 3864 3865 3866 3867 3868 3869
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3870 3871


3872
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
3873

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

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

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

G
ge-yafang 已提交
3880
**参数:**
A
asfasdff 已提交
3881

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

G
ge-yafang 已提交
3886
**返回值:**
A
asfasdff 已提交
3887

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

G
ge-yafang 已提交
3892
**示例:**
A
asfasdff 已提交
3893

G
ge-yafang 已提交
3894
```js
G
ge-yafang 已提交
3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905
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 已提交
3906 3907
            }
        }
G
ge-yafang 已提交
3908
        entries.push(entry);
A
asfasdff 已提交
3909
    }
G
ge-yafang 已提交
3910 3911 3912 3913 3914 3915 3916 3917
    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 已提交
3918
        console.log(' getResultSet succeed.');
G
ge-yafang 已提交
3919 3920
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3921
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3922 3923 3924 3925 3926
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3927

3928
### getResultSet<sup>9+</sup>
W
wangkai 已提交
3929

W
wangkai 已提交
3930
getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
W
wangkai 已提交
3931

3932 3933 3934
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用callback异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
3935 3936 3937 3938 3939 3940 3941

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
3942
| predicates  | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates)    | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。             |
G
ge-yafang 已提交
3943
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数,获取与指定Predicates对象匹配的KvStoreResultSet对象。 |
W
wangkai 已提交
3944 3945 3946 3947

**示例:**

```js
3948
import dataSharePredicates from '@ohos.data.dataSharePredicates';
W
wangkai 已提交
3949 3950 3951
let kvStore;
try {
    let resultSet;
W
wangkai 已提交
3952
    let predicates = new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
3953
    predicates.prefixKey("batch_test_string_key");
W
wangkai 已提交
3954
    kvStore.getResultSet(predicates, async function (err, result) {
W
wangkai 已提交
3955 3956
    console.log(' GetResultSet success');
    resultSet = result;
W
wangkai 已提交
3957
    kvStore.closeResultSet(resultSet, function (err, data) {
W
wangkai 已提交
3958 3959 3960 3961 3962 3963 3964
        console.log(' closeResultSet success');
        })
    });
}catch(e) {
    console.log('An unexpected error occurred. Error:' + e);
}
```
3965
### getResultSet<sup>9+</sup>
W
wangkai 已提交
3966

W
wangkai 已提交
3967
getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;KvStoreResultSet&gt;
W
wangkai 已提交
3968

3969 3970 3971
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用Promise异步回调。

**系统接口:** 此接口为系统接口。
W
wangkai 已提交
3972 3973 3974 3975 3976 3977 3978

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
3979
| predicates  |[DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。            |
W
wangkai 已提交
3980 3981 3982 3983 3984

**返回值:**

| 类型    | 说明       |
| ------  | -------   |
3985
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |无返回结果的Promise对象。|
W
wangkai 已提交
3986 3987 3988 3989

**示例:**

```js
3990
import dataSharePredicates from '@ohos.data.dataSharePredicates';
W
wangkai 已提交
3991 3992 3993
let kvStore;
try {
	let resultSet;
W
wangkai 已提交
3994
    let predicates =  new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
3995
    predicates.prefixKey("batch_test_string_key");
W
wangkai 已提交
3996
    kvStore.getResultSet(predicates) .then((result) => {
W
wangkai 已提交
3997 3998
        console.log(' GetResultSet success');
        resultSet = result;
3999
        kvStore.closeResultSet(resultSet, function (err, data) {
W
wangkai 已提交
4000 4001 4002 4003 4004 4005 4006
            console.log(' closeResultSet success');
        })
    });
}catch(e) {
	console.log('An unexpected error occurred. Error:' + e);
}
```
4007
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4008

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

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

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

G
ge-yafang 已提交
4015
**参数:**
A
asfasdff 已提交
4016

4017 4018
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4019 4020
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。             |
A
asfasdff 已提交
4021

G
ge-yafang 已提交
4022
**示例:**
A
asfasdff 已提交
4023

G
ge-yafang 已提交
4024
```js
G
ge-yafang 已提交
4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038
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 已提交
4039 4040


4041
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
4042

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

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

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

G
ge-yafang 已提交
4049
**参数:**
A
asfasdff 已提交
4050

4051 4052
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4053
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
A
asfasdff 已提交
4054

G
ge-yafang 已提交
4055
**返回值:**
A
asfasdff 已提交
4056

4057 4058
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4059
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4060

G
ge-yafang 已提交
4061
**示例:**
A
asfasdff 已提交
4062

G
ge-yafang 已提交
4063
```js
G
ge-yafang 已提交
4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075
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 已提交
4076 4077


4078
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4079

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

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

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

G
ge-yafang 已提交
4086
**参数:**
A
asfasdff 已提交
4087

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

G
ge-yafang 已提交
4093
**示例:**
A
asfasdff 已提交
4094

G
ge-yafang 已提交
4095
```js
G
ge-yafang 已提交
4096 4097 4098 4099 4100 4101 4102 4103 4104 4105
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 已提交
4106 4107
            }
        }
G
ge-yafang 已提交
4108
        entries.push(entry);
A
asfasdff 已提交
4109
    }
G
ge-yafang 已提交
4110 4111 4112 4113
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4114
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
4115
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4116 4117 4118 4119 4120 4121
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4122 4123


4124
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
4125

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

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

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

G
ge-yafang 已提交
4132
**参数:**
A
asfasdff 已提交
4133

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

G
ge-yafang 已提交
4138
**返回值:**
A
asfasdff 已提交
4139

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

G
ge-yafang 已提交
4144
**示例:**
A
asfasdff 已提交
4145

G
ge-yafang 已提交
4146
```js
G
ge-yafang 已提交
4147 4148 4149 4150 4151 4152 4153 4154 4155 4156
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 已提交
4157 4158
            }
        }
G
ge-yafang 已提交
4159
        entries.push(entry);
A
asfasdff 已提交
4160
    }
G
ge-yafang 已提交
4161 4162 4163 4164 4165 4166 4167 4168
    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 已提交
4169
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4170
    }).catch((err) => {
G
ge-yafang 已提交
4171
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4172 4173 4174 4175 4176
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4177 4178


4179
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
4180

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

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

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

G
ge-yafang 已提交
4187
**参数:**
A
asfasdff 已提交
4188

4189 4190 4191 4192
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
4193

G
ge-yafang 已提交
4194
**示例:**
A
asfasdff 已提交
4195

G
ge-yafang 已提交
4196
```js
G
ge-yafang 已提交
4197 4198 4199 4200 4201 4202 4203
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 已提交
4204
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
4205 4206 4207 4208
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
4209
                kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
4210 4211 4212
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
4213
        });
G
ge-yafang 已提交
4214 4215 4216 4217 4218
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
4219 4220


4221
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
4222

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

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

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

G
ge-yafang 已提交
4229
**参数:**
A
asfasdff 已提交
4230

4231 4232 4233
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
4234

G
ge-yafang 已提交
4235
**返回值:**
A
asfasdff 已提交
4236

4237 4238
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4239
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4240

G
ge-yafang 已提交
4241
**示例:**
A
asfasdff 已提交
4242

G
ge-yafang 已提交
4243
```js
G
ge-yafang 已提交
4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267
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 已提交
4268 4269


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

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

G
ge-yafang 已提交
4274
订阅同步完成事件回调通知。
A
asfasdff 已提交
4275

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

G
ge-yafang 已提交
4278
**参数:**
A
asfasdff 已提交
4279

4280 4281
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4282
| event  |string   | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
4283
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 是    |回调函数。用于向调用方发送同步结果的回调。    |
A
asfasdff 已提交
4284

G
ge-yafang 已提交
4285
**示例:**
A
asfasdff 已提交
4286

G
ge-yafang 已提交
4287
```js
G
ge-yafang 已提交
4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303
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 已提交
4304 4305


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

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

G
ge-yafang 已提交
4310
取消订阅同步完成事件回调通知。
A
asfasdff 已提交
4311

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

G
ge-yafang 已提交
4314
**参数:**
A
asfasdff 已提交
4315

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

G
ge-yafang 已提交
4321
**示例:**
A
asfasdff 已提交
4322

G
ge-yafang 已提交
4323
```js
Z
zuojiangjiang 已提交
4324 4325
let kvStore;
class KvstoreModel {
4326 4327 4328 4329
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
4330 4331
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
4332 4333 4334
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
4335 4336
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
4337 4338
        }
    }
G
ge-yafang 已提交
4339 4340
}
```
A
asfasdff 已提交
4341

4342
### on('dataChange')<sup>9+</sup>
W
wangkai 已提交
4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367

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));
});

```

4368
### off('dataChange')<sup>9+</sup>
W
wangkai 已提交
4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383

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

取消订阅数据变更通知,此方法为同步方法。

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

**参数:**

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

**示例:**
A
asfasdff 已提交
4384

W
wangkai 已提交
4385
```js
Z
zuojiangjiang 已提交
4386 4387
let kvStore;
class KvstoreModel {
4388 4389 4390 4391
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
Z
zuojiangjiang 已提交
4392 4393
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
4394 4395 4396
        }
    }
    unsubscribeDataChange() {
Z
zuojiangjiang 已提交
4397 4398
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
4399 4400 4401
        }
    }
}
W
wangkai 已提交
4402 4403 4404
```
### sync<sup>7+</sup>

A
asfasdff 已提交
4405

W
wangkai 已提交
4406
sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void
Z
zengyawen 已提交
4407

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

Z
zuojiangjiang 已提交
4410
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
Z
zengyawen 已提交
4411

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

G
ge-yafang 已提交
4414
**参数:**
A
asfasdff 已提交
4415

4416 4417
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
4418
| deviceIds  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
G
ge-yafang 已提交
4419
| mode  |[SyncMode](#syncmode)   | 是   |同步模式。    |
W
wangkai 已提交
4420
| delayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |
A
asfasdff 已提交
4421

G
ge-yafang 已提交
4422
**示例:**
A
asfasdff 已提交
4423

G
ge-yafang 已提交
4424
```js
G
ge-yafang 已提交
4425 4426 4427
let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
```
A
asfasdff 已提交
4428

W
wangkai 已提交
4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442
### sync<sup>9+</sup>
sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void

在手动同步方式下,触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)

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

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIds  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
W
wangkai 已提交
4443
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
G
ge-yafang 已提交
4444
| query  |[Query](#query8)   | 是   |表示数据库的查询谓词条件  |
W
wangkai 已提交
4445 4446 4447 4448 4449
| delayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |

**示例:**

```js
4450
let kvStore;
W
wangkai 已提交
4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4464
        kvStore.sync(devices, query, mode , 1000);
W
wangkai 已提交
4465 4466 4467 4468 4469 4470
    });
}catch(e) {
    console.log('Sync e' + e);
}
```

4471
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
4472

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

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

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

G
ge-yafang 已提交
4479
**参数:**
A
asfasdff 已提交
4480

4481 4482 4483 4484 4485
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |
| callback  |AsyncCallback&lt;void&gt;  | 是   |回调函数。   |

G
ge-yafang 已提交
4486
**示例:**
A
asfasdff 已提交
4487

G
ge-yafang 已提交
4488
```js
G
ge-yafang 已提交
4489 4490 4491 4492 4493 4494 4495 4496 4497 4498
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 已提交
4499 4500


4501
### setSyncParam<sup>8+</sup>
A
asfasdff 已提交
4502

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

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

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

G
ge-yafang 已提交
4509
**参数:**
A
asfasdff 已提交
4510

4511 4512 4513 4514
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |

A
asfasdff 已提交
4515

G
ge-yafang 已提交
4516
**返回值:**
A
asfasdff 已提交
4517

4518 4519
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4520
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4521

G
ge-yafang 已提交
4522
**示例:**
A
asfasdff 已提交
4523

G
ge-yafang 已提交
4524
```js
G
ge-yafang 已提交
4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536
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 已提交
4537 4538


4539
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
4540

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

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

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

G
ge-yafang 已提交
4547
**参数:**
A
asfasdff 已提交
4548

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

G
ge-yafang 已提交
4553
**示例:**
A
asfasdff 已提交
4554

G
ge-yafang 已提交
4555
```js
G
ge-yafang 已提交
4556 4557 4558 4559 4560 4561
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
4562
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
4563 4564
}
```
A
asfasdff 已提交
4565 4566


4567
### getSecurityLevel<sup>8+</sup>
A
asfasdff 已提交
4568

4569
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
4570

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

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

G
ge-yafang 已提交
4575
**返回值:**
A
asfasdff 已提交
4576

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

G
ge-yafang 已提交
4581
**示例:**
A
asfasdff 已提交
4582

G
ge-yafang 已提交
4583
```js
G
ge-yafang 已提交
4584 4585 4586 4587 4588 4589 4590 4591
let kvStore;
try {
    kvStore.getSecurityLevel().then((data) => {
        console.log(' getSecurityLevel success');
    }).catch((err) => {
        console.log('getSecurityLevel fail ' + JSON.stringify(err));
    });
}catch(e) {
4592
    console.log('GetSecurityLevel e ' + e);
G
ge-yafang 已提交
4593 4594
}
```
A
asfasdff 已提交
4595 4596


A
asfasdff 已提交
4597
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
4598

G
ge-yafang 已提交
4599 4600 4601 4602 4603 4604 4605
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

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

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

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

4607
### get<sup>8+</sup>
A
asfasdff 已提交
4608

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

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

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

G
ge-yafang 已提交
4615
**参数:**
A
asfasdff 已提交
4616

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

G
ge-yafang 已提交
4623
**示例:**
A
asfasdff 已提交
4624

G
ge-yafang 已提交
4625
```js
G
ge-yafang 已提交
4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639
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 已提交
4640 4641


4642
### get<sup>8+</sup>
A
asfasdff 已提交
4643

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

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

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

G
ge-yafang 已提交
4650
**参数:**
A
asfasdff 已提交
4651

4652 4653 4654
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
4655
| key       |string  | 是    |表示要查询key值的键。    |
A
asfasdff 已提交
4656

G
ge-yafang 已提交
4657
**返回值:**
A
asfasdff 已提交
4658

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

G
ge-yafang 已提交
4663
**示例:**
A
asfasdff 已提交
4664

G
ge-yafang 已提交
4665
```js
G
ge-yafang 已提交
4666 4667 4668 4669 4670 4671 4672 4673 4674 4675
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 已提交
4676
        });
G
ge-yafang 已提交
4677 4678 4679 4680 4681 4682 4683
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
4684 4685


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

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

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

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

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

4696 4697 4698 4699 4700
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是  |回调函数,返回满足给定条件的所有键值对的列表。    |
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
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 已提交
4715 4716
            }
        }
G
ge-yafang 已提交
4717
        entries.push(entry);
A
asfasdff 已提交
4718
    }
G
ge-yafang 已提交
4719 4720 4721
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
4722
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entries) {
G
ge-yafang 已提交
4723
            console.log('getEntries success');
4724 4725
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4726 4727 4728 4729 4730 4731
        });
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4732 4733


4734
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4735

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

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

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

G
ge-yafang 已提交
4742
**参数:**
A
asfasdff 已提交
4743

4744 4745 4746 4747
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4748

G
ge-yafang 已提交
4749
**返回值:**
A
asfasdff 已提交
4750

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

G
ge-yafang 已提交
4755
**示例:**
A
asfasdff 已提交
4756

G
ge-yafang 已提交
4757
```js
G
ge-yafang 已提交
4758 4759 4760 4761 4762 4763 4764 4765 4766 4767
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 已提交
4768 4769
            }
        }
G
ge-yafang 已提交
4770 4771 4772 4773 4774
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
4775
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => {
G
ge-yafang 已提交
4776
            console.log('getEntries success');
4777
            console.log('entries.length: ' + entries.length);
4778
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
4779 4780
            console.log('entries[0].value: ' + JSON.stringify(entries[0].value));
            console.log('entries[0].value.value: ' + entries[0].value.value);
A
asfasdff 已提交
4781
        }).catch((err) => {
G
ge-yafang 已提交
4782
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4783
        });
G
ge-yafang 已提交
4784 4785 4786 4787 4788 4789 4790
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4791 4792


4793
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4794

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

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

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

G
ge-yafang 已提交
4801
**参数:**
A
asfasdff 已提交
4802

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

G
ge-yafang 已提交
4808
**示例:**
A
asfasdff 已提交
4809

G
ge-yafang 已提交
4810
```js
G
ge-yafang 已提交
4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821
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 已提交
4822 4823
            }
        }
G
ge-yafang 已提交
4824
        entries.push(entry);
A
asfasdff 已提交
4825
    }
G
ge-yafang 已提交
4826 4827 4828 4829 4830 4831
    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');
4832
        kvStore.getEntries(query, function (err,entries) {
G
ge-yafang 已提交
4833
            console.log('getEntries success');
4834 4835
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4836 4837 4838 4839 4840 4841 4842
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4843 4844


4845
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4846

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

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

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

G
ge-yafang 已提交
4853
**参数:**
A
asfasdff 已提交
4854

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

G
ge-yafang 已提交
4859
**返回值:**
A
asfasdff 已提交
4860

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

G
ge-yafang 已提交
4865
**示例:**
A
asfasdff 已提交
4866

G
ge-yafang 已提交
4867
```js
G
ge-yafang 已提交
4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878
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 已提交
4879 4880
            }
        }
G
ge-yafang 已提交
4881 4882 4883 4884 4885 4886 4887
        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");
4888
        kvStore.getEntries(query).then((entries) => {
G
ge-yafang 已提交
4889
            console.log('getEntries success');
A
asfasdff 已提交
4890
        }).catch((err) => {
G
ge-yafang 已提交
4891
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4892
        });
G
ge-yafang 已提交
4893 4894 4895 4896 4897 4898 4899 4900
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4901 4902


4903
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4904

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

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

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

G
ge-yafang 已提交
4911
**参数:**
A
asfasdff 已提交
4912

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

G
ge-yafang 已提交
4919
**示例:**
A
asfasdff 已提交
4920

G
ge-yafang 已提交
4921
```js
G
ge-yafang 已提交
4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932
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 已提交
4933 4934
            }
        }
G
ge-yafang 已提交
4935
        entries.push(entry);
A
asfasdff 已提交
4936
    }
G
ge-yafang 已提交
4937 4938 4939 4940 4941 4942
    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");
4943
        kvStore.getEntries('localDeviceId', query, function (err,entries) {
G
ge-yafang 已提交
4944
            console.log('getEntries success');
4945 4946
            console.log('entries.length: ' + entries.length);
            console.log('entries[0]: ' + JSON.stringify(entries[0]));
G
ge-yafang 已提交
4947 4948 4949 4950 4951 4952 4953
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4954 4955


4956
### getEntries<sup>8+</sup>
A
asfasdff 已提交
4957

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

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

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

G
ge-yafang 已提交
4964
**参数:**
A
asfasdff 已提交
4965

4966 4967 4968
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4969
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4970

G
ge-yafang 已提交
4971
**返回值:**
A
asfasdff 已提交
4972

4973 4974
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4975
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。|
A
asfasdff 已提交
4976

G
ge-yafang 已提交
4977
**示例:**
A
asfasdff 已提交
4978

G
ge-yafang 已提交
4979
```js
G
ge-yafang 已提交
4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990
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 已提交
4991 4992
            }
        }
G
ge-yafang 已提交
4993 4994 4995 4996 4997 4998 4999 5000
        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");
5001
        kvStore.getEntries('localDeviceId', query).then((entries) => {
G
ge-yafang 已提交
5002
            console.log('getEntries success');
A
asfasdff 已提交
5003
        }).catch((err) => {
G
ge-yafang 已提交
5004
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
5005
        });
G
ge-yafang 已提交
5006 5007 5008 5009 5010 5011 5012 5013
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
5014 5015


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

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

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

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

G
ge-yafang 已提交
5024
**参数:**
A
asfasdff 已提交
5025

5026 5027 5028 5029
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
G
ge-yafang 已提交
5030
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
5031

G
ge-yafang 已提交
5032
**示例:**
A
asfasdff 已提交
5033

G
ge-yafang 已提交
5034
```js
G
ge-yafang 已提交
5035 5036 5037 5038
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
5039
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5040
        resultSet = result;
W
wangkai 已提交
5041
        kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
5042 5043 5044 5045 5046 5047 5048
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
5049 5050


5051
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
5052

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

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

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

G
ge-yafang 已提交
5059
**参数:**
A
asfasdff 已提交
5060

5061 5062 5063 5064
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
5065

G
ge-yafang 已提交
5066
**返回值:**
A
asfasdff 已提交
5067

5068 5069
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5070
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
5071

G
ge-yafang 已提交
5072
**示例:**
A
asfasdff 已提交
5073

G
ge-yafang 已提交
5074
```js
G
ge-yafang 已提交
5075 5076 5077 5078
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
G
ge-yafang 已提交
5079
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5080 5081
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
5082
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5083 5084 5085 5086 5087 5088 5089 5090 5091 5092
    });
    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 已提交
5093 5094


5095
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
5096

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

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

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

G
ge-yafang 已提交
5103
**参数:**
A
asfasdff 已提交
5104

5105 5106
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
5107
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
5108
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
5109

G
ge-yafang 已提交
5110
**示例:**
A
asfasdff 已提交
5111

G
ge-yafang 已提交
5112
```js
G
ge-yafang 已提交
5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123
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 已提交
5124 5125
            }
        }
G
ge-yafang 已提交
5126
        entries.push(entry);
A
asfasdff 已提交
5127
    }
G
ge-yafang 已提交
5128 5129 5130 5131 5132
    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 已提交
5133
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
5134
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5135
            resultSet = result;
W
wangkai 已提交
5136
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
5137 5138 5139 5140 5141 5142 5143 5144
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
5145 5146


5147
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
5148

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

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

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

G
ge-yafang 已提交
5155
**参数:**
A
asfasdff 已提交
5156

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

G
ge-yafang 已提交
5161
**返回值:**
A
asfasdff 已提交
5162

5163 5164
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5165
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
5166

G
ge-yafang 已提交
5167
**示例:**
A
asfasdff 已提交
5168

G
ge-yafang 已提交
5169
```js
G
ge-yafang 已提交
5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180
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 已提交
5181 5182
            }
        }
G
ge-yafang 已提交
5183
        entries.push(entry);
A
asfasdff 已提交
5184
    }
G
ge-yafang 已提交
5185 5186 5187 5188 5189 5190 5191 5192 5193 5194
    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 已提交
5195
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5196 5197
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
5198
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5199 5200 5201 5202 5203 5204 5205 5206 5207 5208
    });
    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 已提交
5209 5210


5211
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
5212

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

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

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

G
ge-yafang 已提交
5219
**参数:**
A
asfasdff 已提交
5220

5221 5222 5223
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5224
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
5225
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
5226

G
ge-yafang 已提交
5227
**示例:**
A
asfasdff 已提交
5228

G
ge-yafang 已提交
5229
```js
G
ge-yafang 已提交
5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240
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 已提交
5241 5242
            }
        }
G
ge-yafang 已提交
5243
        entries.push(entry);
A
asfasdff 已提交
5244
    }
G
ge-yafang 已提交
5245 5246 5247 5248
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
5249
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
G
ge-yafang 已提交
5250
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5251
            resultSet = result;
W
wangkai 已提交
5252
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
5253 5254 5255 5256 5257 5258 5259 5260
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
5261 5262


5263
### getResultSet<sup>8+</sup>
A
asfasdff 已提交
5264

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

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

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

G
ge-yafang 已提交
5271
**参数:**
A
asfasdff 已提交
5272

5273 5274 5275
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5276
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
5277

G
ge-yafang 已提交
5278
**返回值:**
A
asfasdff 已提交
5279

5280 5281
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5282
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
5283

G
ge-yafang 已提交
5284
**示例:**
A
asfasdff 已提交
5285

G
ge-yafang 已提交
5286
```js
G
ge-yafang 已提交
5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297
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 已提交
5298 5299
            }
        }
G
ge-yafang 已提交
5300
        entries.push(entry);
A
asfasdff 已提交
5301
    }
G
ge-yafang 已提交
5302 5303 5304 5305 5306 5307 5308 5309
    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 已提交
5310
        console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
5311 5312
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
5313
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326
    });
    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 已提交
5327 5328


5329
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
5330

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

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

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

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

5339 5340
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5341
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
5342
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
5343

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

G
ge-yafang 已提交
5346
```js
G
ge-yafang 已提交
5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361
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 已提交
5362 5363


5364
### closeResultSet<sup>8+</sup>
A
asfasdff 已提交
5365

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

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

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

G
ge-yafang 已提交
5372
**参数:**
A
asfasdff 已提交
5373

5374 5375
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5376
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
A
asfasdff 已提交
5377

G
ge-yafang 已提交
5378
**返回值:**
A
asfasdff 已提交
5379

5380 5381
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5382
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5383

G
ge-yafang 已提交
5384
**示例:**
A
asfasdff 已提交
5385

G
ge-yafang 已提交
5386
```js
G
ge-yafang 已提交
5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399
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 已提交
5400 5401


5402
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
5403

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

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

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

G
ge-yafang 已提交
5410
**参数:**
A
asfasdff 已提交
5411

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

G
ge-yafang 已提交
5417
**示例:**
A
asfasdff 已提交
5418

G
ge-yafang 已提交
5419
```js
G
ge-yafang 已提交
5420 5421 5422 5423 5424 5425 5426 5427 5428 5429
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 已提交
5430 5431
            }
        }
G
ge-yafang 已提交
5432
        entries.push(entry);
A
asfasdff 已提交
5433
    }
G
ge-yafang 已提交
5434 5435 5436 5437 5438
    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 已提交
5439
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
5440
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5441 5442 5443 5444 5445 5446
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5447 5448


5449
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
5450

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

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

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

G
ge-yafang 已提交
5457
**参数:**
A
asfasdff 已提交
5458

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

G
ge-yafang 已提交
5463
**返回值:**
A
asfasdff 已提交
5464

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

G
ge-yafang 已提交
5469
**示例:**
A
asfasdff 已提交
5470

G
ge-yafang 已提交
5471
```js
G
ge-yafang 已提交
5472 5473 5474 5475 5476 5477 5478 5479 5480 5481
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 已提交
5482 5483
            }
        }
G
ge-yafang 已提交
5484
        entries.push(entry);
A
asfasdff 已提交
5485
    }
G
ge-yafang 已提交
5486 5487 5488 5489 5490 5491 5492 5493 5494
    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 已提交
5495
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5496
    }).catch((err) => {
G
ge-yafang 已提交
5497
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5498 5499 5500 5501 5502
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5503 5504


5505
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
5506

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

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

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

G
ge-yafang 已提交
5513
**参数:**
A
asfasdff 已提交
5514

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

G
ge-yafang 已提交
5521
**示例:**
A
asfasdff 已提交
5522

G
ge-yafang 已提交
5523
```js
G
ge-yafang 已提交
5524 5525 5526 5527 5528 5529 5530 5531 5532 5533
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 已提交
5534 5535
            }
        }
G
ge-yafang 已提交
5536
        entries.push(entry);
A
asfasdff 已提交
5537
    }
G
ge-yafang 已提交
5538 5539 5540 5541
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
5542
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
G
ge-yafang 已提交
5543
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5544 5545 5546 5547 5548 5549
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5550 5551


5552
### getResultSize<sup>8+</sup>
A
asfasdff 已提交
5553

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

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

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

G
ge-yafang 已提交
5560
**参数:**
A
asfasdff 已提交
5561

5562 5563 5564
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5565
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
5566

G
ge-yafang 已提交
5567
**返回值:**
A
asfasdff 已提交
5568

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

G
ge-yafang 已提交
5573
**示例:**
A
asfasdff 已提交
5574

G
ge-yafang 已提交
5575
```js
G
ge-yafang 已提交
5576 5577 5578 5579 5580 5581 5582 5583 5584 5585
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 已提交
5586 5587
            }
        }
G
ge-yafang 已提交
5588
        entries.push(entry);
A
asfasdff 已提交
5589
    }
G
ge-yafang 已提交
5590 5591 5592 5593 5594 5595 5596 5597
    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 已提交
5598
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5599
    }).catch((err) => {
G
ge-yafang 已提交
5600
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5601 5602 5603 5604 5605
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5606 5607


5608
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
5609

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

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

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

G
ge-yafang 已提交
5616
**参数:**
A
asfasdff 已提交
5617

5618 5619 5620 5621
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
5622

G
ge-yafang 已提交
5623
**示例:**
A
asfasdff 已提交
5624

G
ge-yafang 已提交
5625
```js
G
ge-yafang 已提交
5626 5627 5628 5629 5630 5631 5632
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 已提交
5633
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
5634 5635 5636 5637
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
5638
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
5639 5640 5641
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
5642
        });
G
ge-yafang 已提交
5643 5644 5645 5646 5647
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
5648 5649


5650
### removeDeviceData<sup>8+</sup>
A
asfasdff 已提交
5651

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

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

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

G
ge-yafang 已提交
5658
**参数:**
A
asfasdff 已提交
5659

5660 5661 5662
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
5663

G
ge-yafang 已提交
5664
**返回值:**
A
asfasdff 已提交
5665

5666 5667
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5668
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5669

G
ge-yafang 已提交
5670
**示例:**
A
asfasdff 已提交
5671

G
ge-yafang 已提交
5672
```js
G
ge-yafang 已提交
5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696
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 已提交
5697 5698


5699
### sync<sup>8+</sup>
A
asfasdff 已提交
5700

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

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

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

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

G
ge-yafang 已提交
5709
**参数:**
A
asfasdff 已提交
5710

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

G
ge-yafang 已提交
5717
**示例:**
A
asfasdff 已提交
5718

G
ge-yafang 已提交
5719
```js
G
ge-yafang 已提交
5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        kvStore.sync(devices, mode);
    });
}catch(e) {
    console.log('Sync e' + e);
}
```
A
asfasdff 已提交
5737

5738
### sync<sup>9+</sup>
W
wangkai 已提交
5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752

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

在手动同步方式下, 触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)

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

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

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIds    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
W
wangkai 已提交
5753
| query            |[Query](#query8)  | 是    | 数据库的查询谓词条件。|
W
wangkai 已提交
5754 5755 5756 5757 5758
| delayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

**示例:**

```js
5759
let kvStore;
W
wangkai 已提交
5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.sync(devices, query, 1000);
    });
}catch(e) {
    console.log('Sync e' + e);
}
```

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

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

G
ge-yafang 已提交
5784
订阅同步完成事件回调通知。
A
asfasdff 已提交
5785

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

G
ge-yafang 已提交
5788
**参数:**
A
asfasdff 已提交
5789

5790 5791
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5792
| event    |string      | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5793
| syncCallback            |Callback<Array&lt;[string, number]&gt;> | 是    |回调函数。用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5794

G
ge-yafang 已提交
5795
**示例:**
Z
zengyawen 已提交
5796

G
ge-yafang 已提交
5797
```js
W
wangkai 已提交
5798
let kvStore;
G
ge-yafang 已提交
5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813
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 已提交
5814 5815


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

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

A
asfasdff 已提交
5820
取消订阅同步完成事件回调通知,该方法为同步方法。
A
asfasdff 已提交
5821

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

G
ge-yafang 已提交
5824
**参数:**
A
asfasdff 已提交
5825

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

G
ge-yafang 已提交
5831
**示例:**
A
asfasdff 已提交
5832

G
ge-yafang 已提交
5833
```js
Z
zuojiangjiang 已提交
5834 5835
let kvStore;
class KvstoreModel {
5836 5837 5838 5839
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
Z
zuojiangjiang 已提交
5840 5841
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
5842 5843 5844
        }
    }
    unsubscribeSyncComplete() {
Z
zuojiangjiang 已提交
5845 5846
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
5847 5848
        }
    }
G
ge-yafang 已提交
5849 5850
}
```
A
asfasdff 已提交
5851

5852
### on('dataChange')<sup>9+</sup>
W
wangkai 已提交
5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877

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));
});
```


5878
### off('dataChange')<sup>9+</sup>
W
wangkai 已提交
5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895

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

取消订阅数据变更通知,此方法为同步方法。

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

**参数:**

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

**示例:**

```js
Z
zuojiangjiang 已提交
5896 5897
let kvStore;
class KvstoreModel {
5898 5899 5900 5901
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
Z
zuojiangjiang 已提交
5902 5903
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
5904 5905 5906
        }
    }
    unsubscribeDataChange() {
Z
zuojiangjiang 已提交
5907 5908
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
5909 5910 5911
        }
    }
}
W
wangkai 已提交
5912 5913
```

5914
## SyncMode
Z
zengyawen 已提交
5915

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

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

G
ge-yafang 已提交
5920
| 名称       | 值     | 说明                    |
5921 5922
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
G
ge-yafang 已提交
5923
| PUSH_ONLY  |1          |表示只能从本端推送数据到远端。 |
5924
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |