1e41f4b71Sopenharmony_ci # @ohos.data.distributedKVStore (分布式键值数据库)(系统接口) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口,应用程序可将数据保存到分布式键值数据库中,并可对分布式键值数据库中的数据进行增加、删除、修改、查询、同步等操作。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci该模块提供以下分布式键值数据库相关的常用功能: 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci- [KVManager](js-apis-distributedKVStore.md#kvmanager):分布式键值数据库管理实例,用于获取数据库的相关信息。 8e41f4b71Sopenharmony_ci- [KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset):提供获取数据库结果集的相关方法,包括查询和移动数据读取位置等。 9e41f4b71Sopenharmony_ci- [Query](js-apis-distributedKVStore.md#query):使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。 10e41f4b71Sopenharmony_ci- [SingleKVStore](#singlekvstore):单版本分布式键值数据库,不对数据所属设备进行区分,提供查询数据和同步数据的方法。 11e41f4b71Sopenharmony_ci- [DeviceKVStore](#devicekvstore):设备协同数据库,继承自[SingleKVStore](#singlekvstore),以设备维度对数据进行区分,提供查询数据和同步数据的方法。 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci> **说明:** 14e41f4b71Sopenharmony_ci> 15e41f4b71Sopenharmony_ci> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 16e41f4b71Sopenharmony_ci> 17e41f4b71Sopenharmony_ci> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.data.distributedKVStore (分布式键值数据库)](js-apis-distributedKVStore.md)。 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci## 导入模块 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci```ts 22e41f4b71Sopenharmony_ciimport { distributedKVStore } from '@kit.ArkData'; 23e41f4b71Sopenharmony_ci``` 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci## SingleKVStore 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ciSingleKVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci在调用SingleKVStore的方法前,需要先通过[getKVStore](js-apis-distributedKVStore.md#getkvstore)构建一个SingleKVStore实例。 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci### putBatch 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciputBatch(value: Array<ValuesBucket>, callback: AsyncCallback<void>): void 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci将值写入SingleKVStore数据库,使用callback异步回调。 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**参数:** 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 46e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------ | 47e41f4b71Sopenharmony_ci| value | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 表示要插入的数据。 | 48e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | 是 | 回调函数。 | 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci**错误码:** 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 55e41f4b71Sopenharmony_ci| ------------ | ---------------------------------------- | 56e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 57e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 58e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 59e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 64e41f4b71Sopenharmony_ci| ------------ | -------------------------------------------- | 65e41f4b71Sopenharmony_ci| 14800047 | The WAL file size exceeds the default limit. | 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci**示例:** 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci```ts 70e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_citry { 73e41f4b71Sopenharmony_ci let v8Arr: distributedKVStore.Entry[] = []; 74e41f4b71Sopenharmony_ci let arr = new Uint8Array([4, 5, 6, 7]); 75e41f4b71Sopenharmony_ci let vb1: distributedKVStore.Entry = { key: "name_1", value: {type: distributedKVStore.ValueType.INTEGER, value: 32} } 76e41f4b71Sopenharmony_ci let vb2: distributedKVStore.Entry = { key: "name_2", value: {type: distributedKVStore.ValueType.BYTE_ARRAY, value: arr} }; 77e41f4b71Sopenharmony_ci let vb3: distributedKVStore.Entry = { key: "name_3", value: {type: distributedKVStore.ValueType.STRING, value: "lisi"} }; 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci v8Arr.push(vb1); 80e41f4b71Sopenharmony_ci v8Arr.push(vb2); 81e41f4b71Sopenharmony_ci v8Arr.push(vb3); 82e41f4b71Sopenharmony_ci kvStore.putBatch(v8Arr, async (err: BusinessError) => { 83e41f4b71Sopenharmony_ci if (err != undefined) { 84e41f4b71Sopenharmony_ci console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`); 85e41f4b71Sopenharmony_ci return; 86e41f4b71Sopenharmony_ci } 87e41f4b71Sopenharmony_ci console.info('Succeeded in putting batch'); 88e41f4b71Sopenharmony_ci }) 89e41f4b71Sopenharmony_ci} catch (e) { 90e41f4b71Sopenharmony_ci let error = e as BusinessError; 91e41f4b71Sopenharmony_ci console.error(`Failed to put batch.code is ${error.code},message is ${error.message}`); 92e41f4b71Sopenharmony_ci} 93e41f4b71Sopenharmony_ci``` 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci### putBatch 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ciputBatch(value: Array<ValuesBucket>): Promise<void> 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ci将valuesbucket类型的值写入SingleKVStore数据库,使用Promise异步回调。 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**参数:** 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 110e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------------ | ---- | ------------------ | 111e41f4b71Sopenharmony_ci| value | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 表示要插入的数据。 | 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci**返回值:** 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci| 类型 | 说明 | 116e41f4b71Sopenharmony_ci| ------------------- | ------------------------- | 117e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的Promise对象。 | 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci**错误码:** 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 124e41f4b71Sopenharmony_ci| ------------ | ---------------------------------------- | 125e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 126e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 127e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 128e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 133e41f4b71Sopenharmony_ci| ------------ | -------------------------------------------- | 134e41f4b71Sopenharmony_ci| 14800047 | The WAL file size exceeds the default limit. | 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci**示例:** 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci```ts 139e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_citry { 142e41f4b71Sopenharmony_ci let v8Arr: distributedKVStore.Entry[] = []; 143e41f4b71Sopenharmony_ci let arr = new Uint8Array([4, 5, 6, 7]); 144e41f4b71Sopenharmony_ci let vb1: distributedKVStore.Entry = { key: "name_1", value: {type: distributedKVStore.ValueType.INTEGER, value: 32} } 145e41f4b71Sopenharmony_ci let vb2: distributedKVStore.Entry = { key: "name_2", value: {type: distributedKVStore.ValueType.BYTE_ARRAY, value: arr} }; 146e41f4b71Sopenharmony_ci let vb3: distributedKVStore.Entry = { key: "name_3", value: {type: distributedKVStore.ValueType.STRING, value: "lisi"} }; 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci v8Arr.push(vb1); 149e41f4b71Sopenharmony_ci v8Arr.push(vb2); 150e41f4b71Sopenharmony_ci v8Arr.push(vb3); 151e41f4b71Sopenharmony_ci kvStore.putBatch(v8Arr).then(async () => { 152e41f4b71Sopenharmony_ci console.info(`Succeeded in putting patch`); 153e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 154e41f4b71Sopenharmony_ci console.error(`putBatch fail.code is ${err.code},message is ${err.message}`); 155e41f4b71Sopenharmony_ci }); 156e41f4b71Sopenharmony_ci} catch (e) { 157e41f4b71Sopenharmony_ci let error = e as BusinessError; 158e41f4b71Sopenharmony_ci console.error(`putBatch fail.code is ${error.code},message is ${error.message}`); 159e41f4b71Sopenharmony_ci} 160e41f4b71Sopenharmony_ci``` 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci### delete 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_cidelete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<void>) 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci从数据库中删除符合predicates条件的键值对,使用callback异步回调。 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**参数:** 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 177e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 178e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 179e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | 是 | 回调函数。 | 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**错误码:** 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 186e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 187e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 188e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 189e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 190e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 195e41f4b71Sopenharmony_ci| ------------ | -------------------------------------------- | 196e41f4b71Sopenharmony_ci| 14800047 | The WAL file size exceeds the default limit. | 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**示例:** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci```ts 201e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 202e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_citry { 205e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 206e41f4b71Sopenharmony_ci let arr = ["name"]; 207e41f4b71Sopenharmony_ci predicates.inKeys(arr); 208e41f4b71Sopenharmony_ci kvStore.put("name", "bob", (err:BusinessError) => { 209e41f4b71Sopenharmony_ci if (err != undefined) { 210e41f4b71Sopenharmony_ci console.error(`Failed to put.code is ${err.code},message is ${err.message}`); 211e41f4b71Sopenharmony_ci return; 212e41f4b71Sopenharmony_ci } 213e41f4b71Sopenharmony_ci console.info("Succeeded in putting"); 214e41f4b71Sopenharmony_ci if (kvStore != null) { 215e41f4b71Sopenharmony_ci kvStore.delete(predicates, (err:BusinessError) => { 216e41f4b71Sopenharmony_ci if (err == undefined) { 217e41f4b71Sopenharmony_ci console.info('Succeeded in deleting'); 218e41f4b71Sopenharmony_ci } else { 219e41f4b71Sopenharmony_ci console.error(`Failed to delete.code is ${err.code},message is ${err.message}`); 220e41f4b71Sopenharmony_ci } 221e41f4b71Sopenharmony_ci }); 222e41f4b71Sopenharmony_ci } 223e41f4b71Sopenharmony_ci }); 224e41f4b71Sopenharmony_ci} catch (e) { 225e41f4b71Sopenharmony_ci let error = e as BusinessError; 226e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.message}`); 227e41f4b71Sopenharmony_ci} 228e41f4b71Sopenharmony_ci``` 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci### delete 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_cidelete(predicates: dataSharePredicates.DataSharePredicates): Promise<void> 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci从数据库中删除符合predicates条件的键值对,使用Promise异步回调。 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci**参数:** 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 245e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 246e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci**返回值:** 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci| 类型 | 说明 | 251e41f4b71Sopenharmony_ci| ------------------- | ------------------------- | 252e41f4b71Sopenharmony_ci| Promise<void> | 无返回结果的Promise对象。 | 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci**错误码:** 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 259e41f4b71Sopenharmony_ci| ------------ | ---------------------------------------- | 260e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 261e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 262e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 263e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[关系型数据库错误码](errorcode-data-rdb.md)。 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 268e41f4b71Sopenharmony_ci| ------------ | -------------------------------------------- | 269e41f4b71Sopenharmony_ci| 14800047 | The WAL file size exceeds the default limit. | 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci**示例:** 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci```ts 274e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 275e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_citry { 278e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 279e41f4b71Sopenharmony_ci let arr = ["name"]; 280e41f4b71Sopenharmony_ci predicates.inKeys(arr); 281e41f4b71Sopenharmony_ci kvStore.put("name", "bob").then(() => { 282e41f4b71Sopenharmony_ci console.info(`Succeeded in putting data`); 283e41f4b71Sopenharmony_ci if (kvStore != null) { 284e41f4b71Sopenharmony_ci kvStore.delete(predicates).then(() => { 285e41f4b71Sopenharmony_ci console.info('Succeeded in deleting'); 286e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 287e41f4b71Sopenharmony_ci console.error(`Failed to delete.code is ${err.code},message is ${err.message}`); 288e41f4b71Sopenharmony_ci }); 289e41f4b71Sopenharmony_ci } 290e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 291e41f4b71Sopenharmony_ci console.error(`Failed to put.code is ${err.code},message is ${err.message}`); 292e41f4b71Sopenharmony_ci }); 293e41f4b71Sopenharmony_ci} catch (e) { 294e41f4b71Sopenharmony_ci let error = e as BusinessError; 295e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.message}`); 296e41f4b71Sopenharmony_ci} 297e41f4b71Sopenharmony_ci``` 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ci### getResultSet 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_cigetResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci获取与指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 308e41f4b71Sopenharmony_ci 309e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci**参数:** 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 314e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 315e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 316e41f4b71Sopenharmony_ci| callback | AsyncCallback<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci**错误码:** 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 323e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 324e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 325e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 326e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 327e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 328e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**示例:** 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci```ts 333e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 334e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_citry { 337e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 338e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 339e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 340e41f4b71Sopenharmony_ci kvStore.getResultSet(predicates, async (err: BusinessError, result: distributedKVStore.KVStoreResultSet) => { 341e41f4b71Sopenharmony_ci if (err != undefined) { 342e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 343e41f4b71Sopenharmony_ci return; 344e41f4b71Sopenharmony_ci } 345e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 346e41f4b71Sopenharmony_ci resultSet = result; 347e41f4b71Sopenharmony_ci if (kvStore != null) { 348e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet, (err: BusinessError) => { 349e41f4b71Sopenharmony_ci if (err != undefined) { 350e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 351e41f4b71Sopenharmony_ci return; 352e41f4b71Sopenharmony_ci } 353e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 354e41f4b71Sopenharmony_ci }); 355e41f4b71Sopenharmony_ci } 356e41f4b71Sopenharmony_ci }); 357e41f4b71Sopenharmony_ci} catch (e) { 358e41f4b71Sopenharmony_ci let error = e as BusinessError; 359e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 360e41f4b71Sopenharmony_ci} 361e41f4b71Sopenharmony_ci``` 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci### getResultSet 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_cigetResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ci获取与指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 372e41f4b71Sopenharmony_ci 373e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 374e41f4b71Sopenharmony_ci 375e41f4b71Sopenharmony_ci**参数:** 376e41f4b71Sopenharmony_ci 377e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 378e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 379e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci**返回值:** 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci| 类型 | 说明 | 384e41f4b71Sopenharmony_ci| ---------------------------------------------------- | ------------------------- | 385e41f4b71Sopenharmony_ci| Promise<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 无返回结果的Promise对象。 | 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci**错误码:** 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 392e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 393e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 394e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 395e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 396e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 397e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci**示例:** 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci```ts 402e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 403e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_citry { 406e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 407e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 408e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 409e41f4b71Sopenharmony_ci kvStore.getResultSet(predicates).then((result: distributedKVStore.KVStoreResultSet) => { 410e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 411e41f4b71Sopenharmony_ci resultSet = result; 412e41f4b71Sopenharmony_ci if (kvStore != null) { 413e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet).then(() => { 414e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 415e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 416e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 417e41f4b71Sopenharmony_ci }); 418e41f4b71Sopenharmony_ci } 419e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 420e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 421e41f4b71Sopenharmony_ci }); 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci} catch (e) { 424e41f4b71Sopenharmony_ci let error = e as BusinessError; 425e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 426e41f4b71Sopenharmony_ci} 427e41f4b71Sopenharmony_ci``` 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ci## DeviceKVStore 430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci设备协同数据库,继承自SingleKVStore,提供查询数据和同步数据的方法。 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ci设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。 434e41f4b71Sopenharmony_ci 435e41f4b71Sopenharmony_ci比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci在调用DeviceKVStore的方法前,需要先通过[getKVStore](js-apis-distributedKVStore.md#getkvstore)构建一个DeviceKVStore实例。 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci### getResultSet 440e41f4b71Sopenharmony_ci 441e41f4b71Sopenharmony_cigetResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 442e41f4b71Sopenharmony_ci 443e41f4b71Sopenharmony_ci获取与本设备指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 446e41f4b71Sopenharmony_ci 447e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 448e41f4b71Sopenharmony_ci 449e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**参数:** 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 454e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 455e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 456e41f4b71Sopenharmony_ci| callback | AsyncCallback<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_ci**错误码:** 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 463e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 464e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 465e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 466e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 467e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 468e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 469e41f4b71Sopenharmony_ci 470e41f4b71Sopenharmony_ci**示例:** 471e41f4b71Sopenharmony_ci 472e41f4b71Sopenharmony_ci```ts 473e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 474e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 475e41f4b71Sopenharmony_ci 476e41f4b71Sopenharmony_citry { 477e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 478e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 479e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 480e41f4b71Sopenharmony_ci kvStore.getResultSet(predicates, async (err: BusinessError, result: distributedKVStore.KVStoreResultSet) => { 481e41f4b71Sopenharmony_ci if (err != undefined) { 482e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 483e41f4b71Sopenharmony_ci return; 484e41f4b71Sopenharmony_ci } 485e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 486e41f4b71Sopenharmony_ci resultSet = result; 487e41f4b71Sopenharmony_ci if (kvStore != null) { 488e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet, (err: BusinessError) => { 489e41f4b71Sopenharmony_ci if (err != undefined) { 490e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 491e41f4b71Sopenharmony_ci return; 492e41f4b71Sopenharmony_ci } 493e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 494e41f4b71Sopenharmony_ci }) 495e41f4b71Sopenharmony_ci } 496e41f4b71Sopenharmony_ci }); 497e41f4b71Sopenharmony_ci} catch (e) { 498e41f4b71Sopenharmony_ci let error = e as BusinessError; 499e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 500e41f4b71Sopenharmony_ci} 501e41f4b71Sopenharmony_ci``` 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci### getResultSet 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_cigetResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 506e41f4b71Sopenharmony_ci 507e41f4b71Sopenharmony_ci获取与本设备指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 508e41f4b71Sopenharmony_ci 509e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 510e41f4b71Sopenharmony_ci 511e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 512e41f4b71Sopenharmony_ci 513e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 514e41f4b71Sopenharmony_ci 515e41f4b71Sopenharmony_ci**参数:** 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 518e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 519e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 520e41f4b71Sopenharmony_ci 521e41f4b71Sopenharmony_ci**返回值:** 522e41f4b71Sopenharmony_ci 523e41f4b71Sopenharmony_ci| 类型 | 说明 | 524e41f4b71Sopenharmony_ci| ---------------------------------------------------- | ------------------------- | 525e41f4b71Sopenharmony_ci| Promise<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 无返回结果的Promise对象。 | 526e41f4b71Sopenharmony_ci 527e41f4b71Sopenharmony_ci**错误码:** 528e41f4b71Sopenharmony_ci 529e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 532e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 533e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 534e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 535e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 536e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 537e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 538e41f4b71Sopenharmony_ci 539e41f4b71Sopenharmony_ci**示例:** 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci```ts 542e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 543e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_citry { 546e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 547e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 548e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 549e41f4b71Sopenharmony_ci kvStore.getResultSet(predicates).then((result: distributedKVStore.KVStoreResultSet) => { 550e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 551e41f4b71Sopenharmony_ci resultSet = result; 552e41f4b71Sopenharmony_ci if (kvStore != null) { 553e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet).then(() => { 554e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 555e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 556e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 557e41f4b71Sopenharmony_ci }); 558e41f4b71Sopenharmony_ci } 559e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 560e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 561e41f4b71Sopenharmony_ci }); 562e41f4b71Sopenharmony_ci} catch (e) { 563e41f4b71Sopenharmony_ci let error = e as BusinessError; 564e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 565e41f4b71Sopenharmony_ci} 566e41f4b71Sopenharmony_ci``` 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ci### getResultSet 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_cigetResultSet(deviceId: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KVStoreResultSet>): void 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci获取与指定Predicate对象匹配的KVStoreResultSet对象,使用callback异步回调。 573e41f4b71Sopenharmony_ci> **说明:** 574e41f4b71Sopenharmony_ci> 575e41f4b71Sopenharmony_ci> 其中deviceId通过调用[deviceManager.getAvailableDeviceListSync](../apis-distributedservice-kit/js-apis-distributedDeviceManager.md#getavailabledevicelistsync)方法得到。 576e41f4b71Sopenharmony_ci> deviceId具体获取方式请参考[sync接口示例](js-apis-distributedKVStore.md#sync)。 577e41f4b71Sopenharmony_ci 578e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 581e41f4b71Sopenharmony_ci 582e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 583e41f4b71Sopenharmony_ci 584e41f4b71Sopenharmony_ci**参数:** 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 587e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 588e41f4b71Sopenharmony_ci| deviceId | string | 是 | 标识要查询其数据的设备。 | 589e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 590e41f4b71Sopenharmony_ci| callback | AsyncCallback<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 是 | 回调函数,获取与指定Predicates对象匹配的KVStoreResultSet对象。 | 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci**错误码:** 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 595e41f4b71Sopenharmony_ci 596e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 597e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 598e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 599e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 600e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 601e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 602e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 603e41f4b71Sopenharmony_ci 604e41f4b71Sopenharmony_ci**示例:** 605e41f4b71Sopenharmony_ci 606e41f4b71Sopenharmony_ci```ts 607e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 608e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 609e41f4b71Sopenharmony_ci 610e41f4b71Sopenharmony_citry { 611e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 612e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 613e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 614e41f4b71Sopenharmony_ci kvStore.getResultSet('localDeviceId', predicates, async (err: BusinessError, result: distributedKVStore.KVStoreResultSet) => { 615e41f4b71Sopenharmony_ci if (err != undefined) { 616e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 617e41f4b71Sopenharmony_ci return; 618e41f4b71Sopenharmony_ci } 619e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 620e41f4b71Sopenharmony_ci resultSet = result; 621e41f4b71Sopenharmony_ci if (kvStore != null) { 622e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet, (err: BusinessError) => { 623e41f4b71Sopenharmony_ci if (err != undefined) { 624e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 625e41f4b71Sopenharmony_ci return; 626e41f4b71Sopenharmony_ci } 627e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 628e41f4b71Sopenharmony_ci }) 629e41f4b71Sopenharmony_ci } 630e41f4b71Sopenharmony_ci }); 631e41f4b71Sopenharmony_ci} catch (e) { 632e41f4b71Sopenharmony_ci let error = e as BusinessError; 633e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 634e41f4b71Sopenharmony_ci} 635e41f4b71Sopenharmony_ci``` 636e41f4b71Sopenharmony_ci 637e41f4b71Sopenharmony_ci### getResultSet 638e41f4b71Sopenharmony_ci 639e41f4b71Sopenharmony_cigetResultSet(deviceId: string, predicates: dataSharePredicates.DataSharePredicates): Promise<KVStoreResultSet> 640e41f4b71Sopenharmony_ci 641e41f4b71Sopenharmony_ci获取与指定Predicate对象匹配的KVStoreResultSet对象,使用Promise异步回调。 642e41f4b71Sopenharmony_ci> **说明:** 643e41f4b71Sopenharmony_ci> 644e41f4b71Sopenharmony_ci> 其中deviceId通过调用[deviceManager.getAvailableDeviceListSync](../apis-distributedservice-kit/js-apis-distributedDeviceManager.md#getavailabledevicelistsync)方法得到。 645e41f4b71Sopenharmony_ci> deviceId具体获取方式请参考[sync接口示例](js-apis-distributedKVStore.md#sync)。 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci**模型约束:** 此接口仅可在Stage模型下使用 648e41f4b71Sopenharmony_ci 649e41f4b71Sopenharmony_ci**系统接口:** 此接口为系统接口。 650e41f4b71Sopenharmony_ci 651e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider 652e41f4b71Sopenharmony_ci 653e41f4b71Sopenharmony_ci**参数:** 654e41f4b71Sopenharmony_ci 655e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 656e41f4b71Sopenharmony_ci| ---------- | ------------------------------------------------------------ | ---- | ----------------------------------------------- | 657e41f4b71Sopenharmony_ci| deviceId | string | 是 | 标识要查询其数据的设备。 | 658e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件,当此参数为null时,应定义处理逻辑。 | 659e41f4b71Sopenharmony_ci 660e41f4b71Sopenharmony_ci**返回值:** 661e41f4b71Sopenharmony_ci 662e41f4b71Sopenharmony_ci| 类型 | 说明 | 663e41f4b71Sopenharmony_ci| ---------------------------------------------------- | ------------------------- | 664e41f4b71Sopenharmony_ci| Promise<[KVStoreResultSet](js-apis-distributedKVStore.md#kvstoreresultset)> | 无返回结果的Promise对象。 | 665e41f4b71Sopenharmony_ci 666e41f4b71Sopenharmony_ci**错误码:** 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[分布式键值数据库错误码](errorcode-distributedKVStore.md)。 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_ci| **错误码ID** | **错误信息** | 671e41f4b71Sopenharmony_ci| ------------ | -------------------------------------- | 672e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 673e41f4b71Sopenharmony_ci| 202 | Permission verification failed, application which is not a system application uses system API.| 674e41f4b71Sopenharmony_ci| 15100001 | Over max limits. | 675e41f4b71Sopenharmony_ci| 15100003 | Database corrupted. | 676e41f4b71Sopenharmony_ci| 15100005 | Database or result set already closed. | 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci**示例:** 679e41f4b71Sopenharmony_ci 680e41f4b71Sopenharmony_ci```ts 681e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 682e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 683e41f4b71Sopenharmony_ci 684e41f4b71Sopenharmony_citry { 685e41f4b71Sopenharmony_ci let resultSet: distributedKVStore.KVStoreResultSet; 686e41f4b71Sopenharmony_ci let predicates = new dataSharePredicates.DataSharePredicates(); 687e41f4b71Sopenharmony_ci predicates.prefixKey("batch_test_string_key"); 688e41f4b71Sopenharmony_ci kvStore.getResultSet('localDeviceId', predicates).then((result: distributedKVStore.KVStoreResultSet) => { 689e41f4b71Sopenharmony_ci console.info('Succeeded in getting result set'); 690e41f4b71Sopenharmony_ci resultSet = result; 691e41f4b71Sopenharmony_ci if (kvStore != null) { 692e41f4b71Sopenharmony_ci kvStore.closeResultSet(resultSet).then(() => { 693e41f4b71Sopenharmony_ci console.info('Succeeded in closing result set'); 694e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 695e41f4b71Sopenharmony_ci console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`); 696e41f4b71Sopenharmony_ci }); 697e41f4b71Sopenharmony_ci } 698e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 699e41f4b71Sopenharmony_ci console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`); 700e41f4b71Sopenharmony_ci }); 701e41f4b71Sopenharmony_ci} catch (e) { 702e41f4b71Sopenharmony_ci let error = e as BusinessError; 703e41f4b71Sopenharmony_ci console.error(`An unexpected error occurred.code is ${error.code},message is ${error.code}`); 704e41f4b71Sopenharmony_ci} 705e41f4b71Sopenharmony_ci```