1# @ohos.data.dataShare (数据共享)(系统接口) 2 3**DataShare**用于应用管理其自身数据,同时支持同个设备上不同应用间的数据共享。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块接口为系统接口。 10> 11> - 本模块接口仅可在Stage模型下使用。 12> 13> - 本模块订阅RDB数据变更的接口on('rdbDataChange')的回调支持不大于200KB数据的传输。 14 15 16## 导入模块 17 18```ts 19import { dataShare } from '@kit.ArkData'; 20``` 21 22## dataShare.createDataShareHelper 23 24createDataShareHelper(context: Context, uri: string, callback: AsyncCallback<DataShareHelper>): void 25 26创建DataShareHelper实例。使用callback异步回调。 27 28> **说明:** 29> 30> 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 31 32**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 33 34**参数:** 35 36| 参数名 | 类型 | 必填 | 说明 | 37| -------- | -------------------------------------------------------- | ---- | ------------------------------------------------------------ | 38| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md#context) | 是 | 应用的上下文环境。 | 39| uri | string | 是 | 要连接的服务端应用的路径。 | 40| callback | AsyncCallback<[DataShareHelper](#datasharehelper)> | 是 | 回调函数。当创建DataShareHelper实例成功,err为undefined,data为获取到的DataShareHelper实例;否则为错误对象。 | 41 42**错误码:** 43 44以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 45 46| 错误码ID | 错误信息 | 47| -------- | ---------------------------------------------------- | 48| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 49| 15700010 | The DataShareHelper is not initialized successfully. | 50 51**示例:** 52 53```ts 54import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; 55import { BusinessError } from '@kit.BasicServicesKit'; 56 57export default class EntryAbility extends UIAbility { 58 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 59 let uri = ("datashare:///com.samples.datasharetest.DataShare"); 60 let dataShareHelper: dataShare.DataShareHelper | undefined = undefined; 61 let context = this.context; 62 try { 63 dataShare.createDataShareHelper(context, uri, (err:BusinessError, data:dataShare.DataShareHelper) => { 64 if (err !== undefined) { 65 console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `); 66 return; 67 } 68 console.info("createDataShareHelper succeed, data : " + data); 69 dataShareHelper = data; 70 }); 71 } catch (err) { 72 let code = (err as BusinessError).code; 73 let message = (err as BusinessError).message; 74 console.error(`createDataShareHelper error: code: ${code}, message: ${message} `); 75 }; 76 }; 77}; 78``` 79 80## dataShare.createDataShareHelper<sup>10+</sup> 81createDataShareHelper(context: Context, uri: string, options: DataShareHelperOptions, callback: AsyncCallback<DataShareHelper>): void 82 83创建DataShareHelper实例。使用callback异步回调。 84 85> **说明:** 86> 87> 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 88 89**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 90 91 92| 参数名 | 类型 | 必填 | 说明 | 93| -------- | -------------------------------------------------------- | ---- | ------------------------------------------------------------ | 94| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md#context) | 是 | 应用的上下文环境。 | 95| uri | string | 是 | 要连接的服务端应用的路径。 | 96| options | [DataShareHelperOptions](#datasharehelperoptions10)| 是 | 指定[DataShareHelper](#datasharehelper)是否在代理模式下,指定非静默访问时的等待拉起时间。<br/>如果不设置,则表示[DataShareHelper](#datasharehelper)不在代理模式下,且非静默访问时的等待拉起时间为2秒。<br/>如果uri以datashareproxy为开头,则必须设置options的isProxy参数,否则DataShareHelper创建失败返回错误。| 97| callback | AsyncCallback<[DataShareHelper](#datasharehelper)> | 是 | 回调函数。当创建DataShareHelper实例成功,err为undefined,data为获取到的DataShareHelper实例;否则为错误对象。 | 98 99**错误码:** 100 101以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 102 103| 错误码ID | 错误信息 | 104| -------- | ---------------------------------------------------- | 105| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 106| 15700010 | The DataShareHelper is not initialized successfully. | 107 108**示例:** 109 110```ts 111import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; 112import { BusinessError } from '@kit.BasicServicesKit'; 113 114export default class EntryAbility extends UIAbility { 115 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 116 let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 117 let dataShareHelper: dataShare.DataShareHelper | undefined = undefined; 118 let context = this.context; 119 try { 120 dataShare.createDataShareHelper(context, uri, {isProxy : true}, (err:BusinessError, data:dataShare.DataShareHelper) => { 121 if (err !== undefined) { 122 console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `); 123 return; 124 } 125 console.info("createDataShareHelper succeed, data : " + data); 126 dataShareHelper = data; 127 }); 128 } catch (err) { 129 let code = (err as BusinessError).code; 130 let message = (err as BusinessError).message; 131 console.error(`createDataShareHelper error: code: ${code}, message: ${message} `); 132 }; 133 }; 134}; 135``` 136## dataShare.createDataShareHelper 137 138createDataShareHelper(context: Context, uri: string, options?: DataShareHelperOptions): Promise<DataShareHelper> 139 140创建DataShareHelper实例。使用Promise异步回调。 141 142> **说明:** 143> 144> 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 145 146**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 147 148**参数:** 149 150| 参数名 | 类型 | 必填 | 说明 | 151| ------- | ------------------------------------------------- | ---- | ------------------------------ | 152| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md#context) | 是 | 应用的上下文环境。 | 153| uri | string | 是 | 要连接的服务端应用的路径。 | 154| options<sup>10+</sup> | [DataShareHelperOptions](#datasharehelperoptions10) | 否 | 可选配置。指定[DataShareHelper](#datasharehelper)是否在代理模式下,指定非静默访问时的等待拉起时间。<br/>如果不设置,则表示[DataShareHelper](#datasharehelper)不在代理模式下,且非静默访问时的等待拉起时间为2秒。<br/>如果uri以datashareproxy为开头,则必须设置options的isProxy参数,否则DataShareHelper创建失败返回错误。| 155 156**返回值:** 157 158| 类型 | 说明 | 159| -------------------------------------------------- | -------------------------------------- | 160| Promise<[DataShareHelper](#datasharehelper)> | Promise对象。返回DataShareHelper实例。 | 161 162**错误码:** 163 164以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 165 166| 错误码ID | 错误信息 | 167| -------- | ---------------------------------------------------- | 168| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 169| 15700010 | The DataShareHelper is not initialized successfully. | 170 171**示例:** 172 173```ts 174import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; 175import { BusinessError } from '@kit.BasicServicesKit'; 176 177export default class EntryAbility extends UIAbility { 178 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 179 let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 180 let dataShareHelper: dataShare.DataShareHelper | undefined = undefined; 181 let context = this.context; 182 try { 183 dataShare.createDataShareHelper(context, uri, {isProxy : true}).then((data: dataShare.DataShareHelper) => { 184 console.info("createDataShareHelper succeed, data : " + data); 185 dataShareHelper = data; 186 }). catch((err: BusinessError) => { 187 console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `); 188 }); 189 } catch (err) { 190 let code = (err as BusinessError).code; 191 let message = (err as BusinessError).message; 192 console.error(`createDataShareHelper error: code: ${code}, message: ${message} `); 193 }; 194 }; 195}; 196``` 197 198## dataShare.enableSilentProxy<sup>11+</sup> 199 200enableSilentProxy(context: Context, uri?: string): Promise<void> 201 202开启静默访问。使用Promise异步回调。 203 204使用规则: 205 - 数据提供方调用此接口,来开启静默访问功能。 206 - 此接口设置的开启结果在校验的时候是搭配data_share_config.json文件中isSilentProxyEnable字段进行工作的。支持的配置可参考[data_share_config.json配置](../../database/share-data-by-datashareextensionability.md)。 207 - 此接口生效在调用datashareHelper相关接口过程中,如果此接口有开启过相关uri,那么会按照此接口的配置来开启静默访问。如果此接口未调用过,则会读取data_share_config.json中的配置来校验Datashare的开启状态。 208 209**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 210 211**参数:** 212 213| 参数名 | 类型 | 必填 | 说明 | 214| ------- | ------------------------------------------------------- | ---- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 215| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md#context) | 是 | 应用的上下文环境。 | 216| uri | string | 否 | 要开启的数据提供方的数据路径。<br />1、全局开关状态:入参不带uri、uri为undefined、uri为null,会清空掉之前设置的所有uri开关状态,开启数据提供方静默访问。<br />2、精准开关状态:uri的入参为固定的值,仅开启该uri对应的静默访问。<br />在调用datashareHelper相关接口时,优先精准匹配uri的开关状态。如果匹配不到,继续匹配全局的开关状态。<br />uri格式:datashare:///{bundleName}/{moduleName}/{storeName}/{tableName} | 217 218**返回值:** 219 220| 类型 | 说明 | 221| -------------------------------------------------- | -------------------------------------- | 222| Promise<void> | 无返回结果的Promise对象。 | 223 224**错误码:** 225 226错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 227 228| 错误码ID | 错误信息 | 229| -------- | ---------------------------------------------------- | 230| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 231| 15700011 | The URI is not exist. | 232 233**示例:** 234 235```ts 236import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; 237import { BusinessError } from '@kit.BasicServicesKit'; 238 239export default class EntryAbility extends UIAbility { 240 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 241 let uri = ("datashare:///com.acts.datasharetest/entry/DB00/TBL00?Proxy=true"); 242 let context = this.context; 243 dataShare.enableSilentProxy(context, uri).then(() => { 244 console.info("enableSilentProxy succeed"); 245 }). catch((err: BusinessError) => { 246 console.error(`enableSilentProxy error: code: ${err.code}, message: ${err.message} `); 247 }); 248 }; 249}; 250``` 251 252## dataShare.disableSilentProxy<sup>11+</sup> 253 254disableSilentProxy(context: Context, uri?: string): Promise<void> 255 256关闭静默访问。使用Promise异步回调。 257 258使用规则: 259 - 数据提供方调用此接口,来关闭静默访问功能。 260 - 此接口设置的关闭结果在校验的时候是搭配data_share_config.json文件中isSilentProxyEnable字段进行工作的。支持的配置可参考[data_share_config.json配置](../../database/share-data-by-datashareextensionability.md)。 261 - 此接口生效在调用datashareHelper相关接口过程中,如果此接口有关闭过相关uri,那么会按照此接口的配置来关闭静默访问。如果此接口未调用过,则会读取data_share_config.json中的配置来校验Datashare的关闭状态。 262 263**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 264 265**参数:** 266 267| 参数名 | 类型 | 必填 | 说明 | 268| ------- | ------------------------------------------------------- | ---- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 269| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md#context) | 是 | 应用的上下文环境。 | 270| uri | string | 否 | 要关闭的数据提供方的数据路径。<br />1、全局开关状态:入参不带uri、uri为undefined、uri为null,会清空掉之前设置的uri开关状态,关闭数据提供方静默访问。<br />2、精准开关状态:uri的入参为固定的值,仅关闭该uri对应的静默访问。<br />在调用datashareHelper相关接口时,优先精准匹配uri的开关状态。如果匹配不到,继续匹配全局的开关状态。<br />uri格式:datashare:///{bundleName}/{moduleName}/{storeName}/{tableName} | 271 272**返回值:** 273 274| 类型 | 说明 | 275| -------------------------------------------------- | -------------------------------------- | 276| Promise<void> | 无返回结果的Promise对象。 | 277 278**错误码:** 279 280错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 281 282| 错误码ID | 错误信息 | 283| -------- | ---------------------------------------------------- | 284| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 285| 15700011 | The URI does not exist. | 286 287**示例:** 288 289```ts 290import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; 291import { BusinessError } from '@kit.BasicServicesKit'; 292 293export default class EntryAbility extends UIAbility { 294 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 295 let uri = ("datashare:///com.acts.datasharetest/entry/DB00/TBL00?Proxy=true"); 296 let context = this.context; 297 dataShare.disableSilentProxy(context, uri).then(() => { 298 console.info("disableSilentProxy succeed"); 299 }). catch((err: BusinessError) => { 300 console.error(`disableSilentProxy error: code: ${err.code}, message: ${err.message} `); 301 }); 302 }; 303}; 304 305``` 306 307## DataShareHelperOptions<sup>10+</sup> 308 309指定[DataShareHelper](#datasharehelper)的可选参数,包含是否在代理模式下,以及非静默访问的拉起等待时间。 310 311**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 312 313| 名称 | 类型 | 必填 | 说明 | 314| -------- | -------- | -------- | -------- | 315| isProxy | boolean | 否 | 默认为false,如果为true,则要创建的[DataShareHelper](#datasharehelper)处于代理模式,所有操作都不会打开数据提供者APP,除非数据库不存在,当数据库不存在时,[createDataShareHelper](#datasharecreatedatasharehelper10)会拉起数据提供者创建数据库。 | 316| waitTime<sup>18+</sup> | number | 否 | 拉起数据提供者进程的等待时间(单位:秒),默认值为2秒。 | 317 318## TemplateId<sup>10+</sup> 319 320标记模板的数据结构,TemplateId是在[addTemplate](#addtemplate10)中自动生成的,在[addTemplate](#addtemplate10)后,可以使用模板id来标记模板。 321 322**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 323 324| 名称 | 类型 | 必填 | 说明 | 325| -------- | -------- | -------- | -------- | 326| subscriberId | string | 是 | 指定处理回调的订阅者的id,与[addTemplate](#addtemplate10)中的subscriberId相同,每个订阅者的ID是唯一的。 | 327| bundleNameOfOwner | string | 是 | 指定创建模板的模板所有者的bundleName,与[addTemplate](#addtemplate10)中的bundleName相同。 | 328 329## PublishedItem<sup>10+</sup> 330 331指定发布的数据类型。 332 333**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 334 335| 名称 | 类型 | 必填 | 说明 | 336| -------- | -------- | -------- | -------- | 337| key | string | 是 | 指定发布数据的键。 | 338| data | string \| ArrayBuffer | 是 | 指定发布的数据。如果发布数据大小超过20KB,建议使用ArrayBuffer。 | 339| subscriberId | string | 是 | 指定订阅者id。 | 340 341## RdbDataChangeNode<sup>10+</sup> 342 343订阅/取消订阅RDB数据变更的结果,回调支持传输不大于200KB的数据。 344 345**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 346 347| 名称 | 类型 | 必填 | 说明 | 348| -------- | -------- | -------- | -------- | 349| uri | string | 是 | 指定回调的uri。 | 350| templateId | [TemplateId](#templateid10) | 是 | 处理回调的templateId。 | 351| data | Array<string> | 是 | 指定回调的数据。若处理回调数据时发生错误,则回调将不会被触发。 | 352 353## PublishedDataChangeNode<sup>10+</sup> 354 355订阅/取消订阅已发布数据变更的结果。 356 357**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 358 359| 名称 | 类型 | 必填 | 说明 | 360| -------- | -------- | -------- | -------- | 361| bundleName | string | 是 | 指定回调的bundleName。 | 362| data | Array<[PublishedItem](#publisheditem10)> | 是 | 指定回调的数据。 | 363 364## Template<sup>10+</sup> 365 366指定订阅中的模板结构。 367 368**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 369 370| 名称 | 类型 | 必填 | 说明 | 371| -------- | -------- | -------- | -------- | 372| predicates | Record<string, string> | 是 | 指定模板的谓词。当调用[on](#onrdbdatachange10)的回调时,谓词用于生成数据。仅适用于rdb存储数据。 | 373| scheduler | string | 是 | 指定模板的调度程序sql。其中嵌入自定义函数处理,目前预置自定义函数remindTimer处理。remindTimer在指定场景触发一次订阅刷新。<br/>触发场景:<br/>1. 修改数据时且有订阅的情况下触发对应的调度程序sql语句。<br/>2. 添加对应库第一个订阅的情况下触发对应的调度程序sql语句。 | 374| update<sup>18+<sup> | string | 否 | 指定模板的update sql语句,未定义时默认值为空字符串。当调用[on](#onrdbdatachange10)的回调时,update参数用于更新数据。仅适用于rdb存储数据。 | 375 376## OperationResult<sup>10+</sup> 377 378订阅/取消订阅数据变更和发布数据的操作结果。 379 380**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 381 382| 名称 | 类型 | 必填 | 说明 | 383| -------- | -------- | ----- | -------- | 384| key | string | 是 | 指定运算结果的键。 | 385| result | number | 是 | 指定运算结果。正常情况下返回0,异常情况下返回错误码。 | 386## UpdateOperation<sup>12+</sup> 387 388批量更新操作的参数结构。 389 390**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 391 392| 名称 | 类型 | 必填 | 说明 | 393| ---------- | ------------------------------------------------------------ | ---- | -------------- | 394| values | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 要更新的数据。 | 395| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。 | 396 397## ChangeType<sup>12+</sup> 398 399数据变更类型枚举。 400 401**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 402 403| 名称 | 值 | 说明 | 404| ---------| ------------| --------------| 405| INSERT | 0 | 表示数据添加。| 406| DELETE | 1 | 表示数据删除。| 407| UPDATE | 2 | 表示数据更新。| 408 409## SubscriptionType<sup>12+</sup> 410 411数据订阅类型枚举。 412 413**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 414 415| 名称 | 值 | 说明 | 416| ----------------------------|------| ---------------------------- | 417| SUBSCRIPTION_TYPE_EXACT_URI | 0 | 表示订阅指定uri路径的数据变更。| 418 419## ChangeInfo<sup>12+</sup> 420 421数据变更时通知用户具体变更的内容,包括数据变更类型、变化的uri、变更的数据内容。 422 423**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 424 425| 名称 | 类型 | 必填 | 说明 | 426| ---------- | ------------------------------------------------------------ | ---- | -------------- | 427| type | [ChangeType](#changetype12) | 是 | 通知变更的类型。 | 428| uri | string | 是 | 指定uri。 | 429| values | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)>| 是 | 更新的数据。 | 430 431## DataShareHelper 432 433DataShare管理工具实例,可使用此实例访问或管理服务端的数据。在调用DataShareHelper提供的方法前,需要先通过[createDataShareHelper](#datasharecreatedatasharehelper)构建一个实例。 434 435### on('dataChange') 436 437on(type: 'dataChange', uri: string, callback: AsyncCallback<void>): void 438 439订阅指定URI对应数据的数据变更事件。若用户(订阅者)已注册了观察者,当有其他用户触发了变更通知时(调用了下文中的notifyChange方法),订阅者将会接收到callback通知。使用callback异步回调。 440 441**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 442 443**参数:** 444 445| 参数名 | 类型 | 必填 | 说明 | 446| -------- | -------------------- | ---- | ------------------------ | 447| type | string | 是 | 订阅的事件/回调类型,支持的事件为'dataChange',当数据更改时,触发该事件。 | 448| uri | string | 是 | 表示指定的数据路径。 | 449| callback | AsyncCallback<void> | 是 | 回调函数。当有其他用户触发了变更通知时调用,err为undefined;否则不被触发或为错误对象。 | 450 451**错误码:** 452 453以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 454 455| 错误码ID | 错误信息 | 456| -------- | -------------------- | 457| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 458| 15700013 | The DataShareHelper instance is already closed.| 459 460**示例:** 461 462```ts 463let onCallback: () => void = (): void => { 464 console.info("**** Observer on callback ****"); 465} 466let uri = ("datashare:///com.samples.datasharetest.DataShare"); 467if (dataShareHelper !== undefined) { 468 (dataShareHelper as dataShare.DataShareHelper).on("dataChange", uri, onCallback); 469} 470``` 471 472### on('dataChange')<sup>12+</sup> 473 474on(event: 'dataChange', type:SubscriptionType, uri: string, callback: AsyncCallback<ChangeInfo>): void 475 476订阅指定URI对应数据的数据变更事件。若用户(订阅者)已注册变更通知,当有其他用户触发了变更通知时(调用了下文中的notifyChange方法),订阅者将会接收到callback通知,通知携带数据变更类型、变化的uri、变更的数据内容。使用callback回调。仅支持非静默访问。 477 478**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 479 480**参数:** 481 482| 参数名 | 类型 | 必填 | 说明 | 483| -------- | -------------------- | ---- | ------------------------ | 484| event | string | 是 | 订阅的事件/回调类型,支持的事件为'dataChange',当有其他用户触发了变更通知时,触发该事件。 | 485| type | [SubscriptionType](#subscriptiontype12)| 是 | 表示数据更改时按指定数据路径通知变更。 | 486| uri | string | 是 | 表示指定的数据路径。 | 487| callback | AsyncCallback<[ChangeInfo](#changeinfo12)> | 是 | 回调函数。当有其他用户触发了变更通知时会回调该函数。| 488 489**错误码:** 490 491以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 492 493| 错误码ID | 错误信息 | 494| -------- | -------------------- | 495| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 496| 15700013 | The DataShareHelper instance is already closed.| 497 498**示例:** 499 500<!--code_no_check--> 501```ts 502import { BusinessError } from '@kit.BasicServicesKit' 503 504let uri = ("datashare:///com.acts.datasharetest"); 505export function callback(error:BusinessError, ChangeInfo:dataShare.ChangeInfo) { 506 console.info(' **** Observer callback **** ChangeInfo:' + JSON.stringify(ChangeInfo)); 507} 508if (dataShareHelper !== undefined) { 509 (dataShareHelper as dataShare.DataShareHelper).on('dataChange', dataShare.SubscriptionType.SUBSCRIPTION_TYPE_EXACT_URI, uri, callback); 510} 511``` 512 513### off('dataChange') 514 515off(type: 'dataChange', uri: string, callback?: AsyncCallback<void>): void 516 517取消订阅指定URI下指定callback对应的数据资源的变更通知。 518 519**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 520 521**参数:** 522 523| 参数名 | 类型 | 必填 | 说明 | 524| -------- | -------------------- | ---- | ------------------------ | 525| type | string | 是 | 取消订阅的事件/回调类型,支持的事件为'dataChange'。 | 526| uri | string | 是 | 表示指定的数据路径。 | 527| callback | AsyncCallback<void> | 否 | 表示指定取消订阅的callback通知,如果为空、为undefined、null,则取消订阅该uri下所有的通知事件。 | 528 529**错误码:** 530 531以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 532 533| 错误码ID | 错误信息 | 534| -------- | -------------------- | 535| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 536| 15700013 | The DataShareHelper instance is already closed.| 537 538**示例:** 539 540```ts 541let callback: () => void = (): void => { 542 console.info("**** Observer on callback ****"); 543} 544let uri = ("datashare:///com.samples.datasharetest.DataShare"); 545if (dataShareHelper != undefined) { 546 (dataShareHelper as dataShare.DataShareHelper).on("dataChange", uri, callback); 547 (dataShareHelper as dataShare.DataShareHelper).off("dataChange", uri, callback); 548} 549``` 550 551 552### off('dataChange')<sup>12+</sup> 553 554off(event: 'dataChange', type:SubscriptionType, uri: string, callback?: AsyncCallback<ChangeInfo>): void 555 556取消订阅指定URI下指定callback对应的数据资源的变更通知。仅支持非静默访问。 557 558**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 559 560**参数:** 561 562| 参数名 | 类型 | 必填 | 说明 | 563| -------- | -------------------- | ---- | ------------------------ | 564| event | string | 是 | 取消订阅的事件/回调类型,支持的事件为'dataChange'。 | 565| type | [SubscriptionType](#subscriptiontype12)| 是 | 表示数据更改时按指定数据路径通知变更。 | 566| uri | string | 是 | 表示指定的数据路径。 | 567| callback | AsyncCallback<[ChangeInfo](#changeinfo12)>| 否 | 表示指定取消订阅的callback通知,如果为空、为undefined、null,则取消订阅该uri下所有的通知事件。如果不为空,传入的callback必须和注册为同一个。| 568 569**错误码:** 570 571以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 572 573| 错误码ID | 错误信息 | 574| -------- | -------------------- | 575| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 576| 15700013 | The DataShareHelper instance is already closed.| 577 578**示例:** 579 580<!--code_no_check--> 581```ts 582import { BusinessError } from '@kit.BasicServicesKit' 583 584let uri = ("datashare:///com.acts.datasharetest"); 585export function callback(error:BusinessError, ChangeInfo:dataShare.ChangeInfo) { 586 console.info(' **** Observer callback **** ChangeInfo:' + JSON.stringify(ChangeInfo)); 587} 588if (dataShareHelper !== undefined) { 589 (dataShareHelper as dataShare.DataShareHelper).on("dataChange", dataShare.SubscriptionType.SUBSCRIPTION_TYPE_EXACT_URI, uri, callback); 590 (dataShareHelper as dataShare.DataShareHelper).off("dataChange", dataShare.SubscriptionType.SUBSCRIPTION_TYPE_EXACT_URI, uri, callback); 591} 592``` 593 594### addTemplate<sup>10+</sup> 595 596addTemplate(uri: string, subscriberId: string, template: Template): void 597 598添加一个指定订阅者的数据模板。 599 600**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 601 602**参数:** 603 604| 参数名 | 类型 | 必填 | 说明 | 605| -------- | ------------------------ | ---- | -------------------------| 606| uri | string | 是 | 要插入的数据的路径。 | 607| subscriberId | string | 是 | 要添加模板的订阅者ID,每个订阅者的ID是唯一的。 | 608| template | [Template](#template10) | 是 | 要添加的数据模板。 | 609 610**错误码:** 611 612以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 613 614| 错误码ID | 错误信息 | 615| -------- | -------------------- | 616| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 617| 15700011 | The URI is not exist.| 618| 15700013 | The DataShareHelper instance is already closed.| 619 620**示例:** 621 622```ts 623let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 624let subscriberId = '11'; 625let key1: string = "p1"; 626let value1: string = "select cityColumn as city_1, visitedCilumn as visited_1 from citys where like = true"; 627let key2: string = "p2"; 628let value2: string = "select cityColumn as city_2, visitedCilumn as visited_2 from citys where like = false"; 629let template: dataShare.Template = { 630 predicates : { 631 key1 : value1, 632 key2 : value2, 633 }, 634 scheduler : "select remindTimer(time) from TBL00", 635 update : "update TBL00 set cityColumn = 'visited' where cityColumn = 'someCity'" 636} 637if (dataShareHelper != undefined) { 638 (dataShareHelper as dataShare.DataShareHelper).addTemplate(uri, subscriberId, template); 639} 640``` 641 642### delTemplate<sup>10+</sup> 643 644delTemplate(uri: string, subscriberId: string): void 645 646删除一个指定订阅者的数据模板。 647 648**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| -------- | -------------| ---- | ------------------------- | 654| uri | string | 是 | 要删除的数据的路径。 | 655| subscriberId | string | 是 | 订阅者ID,每个订阅者的ID是唯一的。 | 656 657**错误码:** 658 659以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 660 661| 错误码ID | 错误信息 | 662| -------- | -------------------- | 663| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 664| 15700011 | The URI is not exist.| 665| 15700013 | The DataShareHelper instance is already closed.| 666 667**示例:** 668 669```ts 670let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 671let subscriberId = '11'; 672let key1: string = "p1"; 673let value1: string = "select cityColumn as city_1, visitedCilumn as visited_1 from citys where like = true"; 674let key2: string = "p2"; 675let value2: string = "select cityColumn as city_2, visitedCilumn as visited_2 from citys where like = false"; 676let template: dataShare.Template = { 677 predicates : { 678 key1 : value1, 679 key2 : value2, 680 }, 681 scheduler : "select remindTimer(time) from TBL00" 682} 683if (dataShareHelper != undefined) { 684 (dataShareHelper as dataShare.DataShareHelper).addTemplate(uri, subscriberId, template); 685 (dataShareHelper as dataShare.DataShareHelper).delTemplate(uri, subscriberId); 686} 687``` 688 689### on('rdbDataChange')<sup>10+</sup> 690 691on(type: 'rdbDataChange', uris: Array<string>, templateId: TemplateId, callback: AsyncCallback<RdbDataChangeNode>): Array<OperationResult> 692 693订阅指定URI和模板对应的数据变更事件。 694 695**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 696 697**参数:** 698 699| 参数名 | 类型 | 必填 | 说明 | 700| -------- | ----------------------------------| ---- | ------------------------------------------------------------ | 701| type | string | 是 | 订阅的事件类型,支持的事件为'rdbDataChange',表示rdb数据的变更事件。type是固定值以外时,接口无响应。 | 702| uris | Array<string> | 是 | 要操作的数据的路径。 | 703| templateId | [TemplateId](#templateid10) | 是 | 处理回调的templateId。 | 704| callback | AsyncCallback<[RdbDataChangeNode](#rdbdatachangenode10)> | 是 | 回调函数。当触发变更通知时调用,err为undefined,node为订阅数据变更结果;否则不被触发或为错误对象。 | 705 706**返回值:** 707 708| 类型 | 说明 | 709| ---------------- | ------------------------------------------------------------ | 710| Array<[OperationResult](#operationresult10)> | 返回操作结果。| 711 712**错误码:** 713 714以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 715 716| 错误码ID | 错误信息 | 717| -------- | -------------------- | 718| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 719| 15700013 | The DataShareHelper instance is already closed.| 720 721**示例:** 722 723```ts 724import { BusinessError } from '@kit.BasicServicesKit' 725 726let onCallback: (err: BusinessError, node: dataShare.RdbDataChangeNode) => void = (err: BusinessError, node:dataShare.RdbDataChangeNode): void => { 727 console.info("onCallback " + JSON.stringify(node.uri)); 728 console.info("onCallback " + JSON.stringify(node.templateId)); 729 console.info("onCallback " + node.data.length); 730 for (let i = 0; i < node.data.length; i++) { 731 console.info("onCallback " + typeof node.data[i] + " " + node.data[i]); 732 } 733} 734 735let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 736let templateId:dataShare.TemplateId = {subscriberId:"11", bundleNameOfOwner:"com.acts.ohos.data.datasharetest"}; 737if (dataShareHelper != undefined) { 738 let result: Array<dataShare.OperationResult> = (dataShareHelper as dataShare.DataShareHelper).on("rdbDataChange", [uri], templateId, onCallback); 739} 740``` 741 742### off('rdbDataChange')<sup>10+</sup> 743 744off(type: 'rdbDataChange', uris: Array<string>, templateId: TemplateId, callback?: AsyncCallback<RdbDataChangeNode>): Array<OperationResult> 745 746取消订阅指定URI和模板对应的数据变更事件。 747 748**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 749 750**参数:** 751 752| 参数名 | 类型 | 必填 | 说明 | 753| -------- | -------------------------------------------- | ---- | ---------------------------------------------------------- | 754| type | string | 是 | 取消订阅的事件类型,支持的事件为'rdbDataChange',表示rdb数据的变更事件。 | 755| uris | Array<string> | 是 | 要操作的数据的路径。 | 756| templateId | [TemplateId](#templateid10) | 是 | 处理回调的templateId。 | 757| callback | AsyncCallback<[RdbDataChangeNode](#rdbdatachangenode10)> | 否 | 回调函数。表示指定取消订阅的callback通知,如果为空、为undefined、null,则取消订阅该uri下所有的通知事件。 | 758 759**返回值:** 760 761| 类型 | 说明 | 762| ---------------- | ------------------------------------------------------------ | 763| Array<[OperationResult](#operationresult10)> | 返回操作结果。| 764 765**错误码:** 766 767以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 768 769| 错误码ID | 错误信息 | 770| -------- | -------------------- | 771| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 772| 15700013 | The DataShareHelper instance is already closed.| 773 774**示例:** 775 776```ts 777let uri = ("datashareproxy://com.samples.datasharetest.DataShare"); 778let templateId:dataShare.TemplateId = {subscriberId:"11", bundleNameOfOwner:"com.acts.ohos.data.datasharetest"}; 779if (dataShareHelper != undefined) { 780 let result: Array<dataShare.OperationResult> = (dataShareHelper as dataShare.DataShareHelper).off("rdbDataChange", [uri], templateId); 781} 782``` 783 784### on('publishedDataChange')<sup>10+</sup> 785 786on(type: 'publishedDataChange', uris: Array<string>, subscriberId: string, callback: AsyncCallback<PublishedDataChangeNode>): Array<OperationResult> 787 788订阅已发布数据的数据变更通知。 789 790**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 791 792**参数:** 793 794| 参数名 | 类型 | 必填 | 说明 | 795| -------- | ----------------------------------| ---- | ------------------------------------------------------------ | 796| type | string | 是 | 订阅的事件类型,支持的事件为'publishedDataChange',表示已发布数据的变更事件。 | 797| uris | Array<string> | 是 | 要操作的数据的路径。 | 798| subscriberId | string | 是 | 指定处理回调的用户ID。 | 799| callback | AsyncCallback<[PublishedDataChangeNode](#publisheddatachangenode10)> | 是 | 回调函数。当触发变更通知时调用,err为undefined,node为订阅数据变更结果;否则不被触发或为错误对象。 | 800 801**返回值:** 802 803| 类型 | 说明 | 804| ---------------- | ------------------------------------------------------------ | 805| Array<[OperationResult](#operationresult10)> | 返回操作结果。| 806 807**错误码:** 808 809以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 810 811| 错误码ID | 错误信息 | 812| -------- | -------------------- | 813| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 814| 15700013 | The DataShareHelper instance is already closed.| 815 816**示例:** 817 818```ts 819import { BusinessError } from '@kit.BasicServicesKit' 820 821let onPublishCallback: (err: BusinessError, node: dataShare.PublishedDataChangeNode) => void = (err: BusinessError, node:dataShare.PublishedDataChangeNode): void => { 822 console.info("onPublishCallback node bundleName " + JSON.stringify(node.bundleName)); 823 console.info("onPublishCallback node data size" + node.data.length); 824 for (let i = 0; i < node.data.length; i++) { 825 console.info("onPublishCallback node " + typeof node.data[i].data); 826 if (typeof node.data[i].data != 'string') { 827 let array: ArrayBuffer = node.data[i].data as ArrayBuffer; 828 let data: Uint8Array = new Uint8Array(array); 829 console.info("onPublishCallback " + i + " " + JSON.stringify(data)); 830 } 831 console.info("onPublishCallback data " + i + " " + JSON.stringify(node.data[i])); 832 } 833} 834let uris:Array<string> = ['city', 'datashareproxy://com.acts.ohos.data.datasharetest/appInfo', 'key2']; 835let subscriberId = '11'; 836if (dataShareHelper != undefined) { 837 let result: Array<dataShare.OperationResult> = (dataShareHelper as dataShare.DataShareHelper).on('publishedDataChange', uris, subscriberId, onPublishCallback); 838} 839``` 840 841### off('publishedDataChange')<sup>10+</sup> 842 843off(type: 'publishedDataChange', uris: Array<string>, subscriberId: string, callback?: AsyncCallback<PublishedDataChangeNode>): Array<OperationResult> 844 845取消订阅已发布数据的数据变更通知。 846 847**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 848 849**参数:** 850 851| 参数名 | 类型 | 必填 | 说明 | 852| -------- | -------------------------------------------- | ---- | ---------------------------------------------------------- | 853| type | string | 是 | 取消订阅的事件类型,支持的事件为'publishedDataChange',表示已发布数据的变更事件。| 854| uris | Array<string> | 是 | 要操作的数据的路径。 | 855| subscriberId | string | 是 | 指定处理回调的用户ID。 | 856| callback | AsyncCallback<[PublishedDataChangeNode](#publisheddatachangenode10)> | 否 | 回调函数。表示指定取消订阅的callback通知,如果为空、为undefined、null,则取消订阅该uri下所有的通知事件。 | 857 858**返回值:** 859 860| 类型 | 说明 | 861| ---------------- | ------------------------------------------------------------ | 862| Array<[OperationResult](#operationresult10)> | 返回操作结果。| 863 864**错误码:** 865 866以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 867 868| 错误码ID | 错误信息 | 869| -------- | -------------------- | 870| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 871| 15700013 | The DataShareHelper instance is already closed.| 872 873**示例:** 874 875```ts 876import { BusinessError } from '@kit.BasicServicesKit' 877 878let offCallback: (err: BusinessError, node: dataShare.PublishedDataChangeNode) => void = (err: BusinessError, node:dataShare.PublishedDataChangeNode): void => { 879 console.info("**** Observer off callback ****"); 880} 881let uris:Array<string> = ["city", "datashareproxy://com.acts.ohos.data.datasharetest/appInfo", "key2"]; 882let subscriberId = '11'; 883if (dataShareHelper != undefined) { 884 let result: Array<dataShare.OperationResult> = (dataShareHelper as dataShare.DataShareHelper).off("publishedDataChange", uris, subscriberId, offCallback); 885} 886``` 887 888### publish<sup>10+</sup> 889 890publish(data: Array<PublishedItem>, bundleName: string, version: number, callback: AsyncCallback<Array<OperationResult>>): void 891 892发布数据,将数据更新至数据库。 893 894**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 895 896**参数:** 897 898| 参数名 | 类型 | 必填 | 说明 | 899| --------- | -------------------------------------------------| ---- | ------------------- | 900| data | Array<[PublishedItem](#publisheditem10)> | 是 | 要发布的数据。 | 901| bundleName | string | 是 | 表示要发布数据所属的APP,对发布的私有数据生效,仅该app可以读取数据。 | 902| version | number | 是 | 要发布的数据版本,越大表示数据版本越新。如果发布的版本号小于数据库中的记录,则更新失败。 | 903| callback | AsyncCallback<Array<[OperationResult](#operationresult10)>> | 是 | 回调函数。当发布数据时调用,err为undefined,result为发布数据结果;否则不被触发或为错误对象。 | 904 905**错误码:** 906 907以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 908 909| 错误码ID | 错误信息 | 910| -------- | -------------------------- | 911| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 912| 15700012 | The data area is not exist.| 913| 15700013 | The DataShareHelper instance is already closed.| 914 915**示例:** 916 917```ts 918import { BusinessError } from '@kit.BasicServicesKit' 919 920let arrayBuffer = new ArrayBuffer(1); 921let version = 1; 922let dataArray : Array<dataShare.PublishedItem> = [{key:"key2", subscriberId:"11", data:arrayBuffer}]; 923let publishCallback: (err: BusinessError, result: Array<dataShare.OperationResult>) => void = (err: BusinessError, result: Array<dataShare.OperationResult>): void => { 924 console.info("publishCallback " + JSON.stringify(result)); 925} 926try { 927 console.info("dataArray length is:", dataArray.length); 928 if (dataShareHelper != undefined) { 929 (dataShareHelper as dataShare.DataShareHelper).publish(dataArray, "com.acts.ohos.data.datasharetest", version, publishCallback); 930 } 931} catch (e) { 932 console.error("publish error " + JSON.stringify(e)); 933} 934``` 935 936### publish<sup>10+</sup> 937 938publish(data: Array<PublishedItem>, bundleName: string, callback: AsyncCallback<Array<OperationResult>>): void 939 940发布数据,将数据更新至数据库。 941 942**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 943 944**参数:** 945 946| 参数名 | 类型 | 必填 | 说明 | 947| -------- | ------------------------------------------------- | ---- | ---------------------------------- | 948| data | Array<[PublishedItem](#publisheditem10)> | 是 | 要发布的数据。 | 949| bundleName | string | 是 | 表示要发布数据所属的APP,对发布的私有数据生效,仅该app可以读取数据。 | 950| callback | AsyncCallback<Array<[OperationResult](#operationresult10)>> | 是 | 回调函数。当发布数据时调用,err为undefined,result为发布数据结果;否则不被触发或为错误对象。 | 951 952**错误码:** 953 954以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 955 956| 错误码ID | 错误信息 | 957| -------- | -------------------------- | 958| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 959| 15700012 | The data area is not exist.| 960| 15700013 | The DataShareHelper instance is already closed.| 961 962**示例:** 963 964```ts 965import { BusinessError } from '@kit.BasicServicesKit' 966 967let publishCallback: (err: BusinessError, result: Array<dataShare.OperationResult>) => void = (err: BusinessError, result: Array<dataShare.OperationResult>): void => { 968 console.info("publishCallback " + JSON.stringify(result)); 969} 970let dataArray : Array<dataShare.PublishedItem> = [ 971 {key:"city", subscriberId:"11", data:"xian"}, 972 {key:"datashareproxy://com.acts.ohos.data.datasharetest/appInfo", subscriberId:"11", data:"appinfo is just a test app"}, 973 {key:"empty", subscriberId:"11", data:"nobody sub"}]; 974if (dataShareHelper != undefined) { 975 (dataShareHelper as dataShare.DataShareHelper).publish(dataArray, "com.acts.ohos.data.datasharetest", publishCallback); 976} 977``` 978 979### publish<sup>10+</sup> 980 981publish(data: Array<PublishedItem>, bundleName: string, version?: number): Promise<Array<OperationResult>> 982 983发布数据,将数据更新至数据库。 984 985**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 986 987**参数:** 988 989| 参数名 | 类型 | 必填 | 说明 | 990| -------- | ----------------------------- | ---- | ------------------------------ | 991| data | Array<[PublishedItem](#publisheditem10)> | 是 | 要发布的数据。| 992| bundleName | string | 是 | 表示要发布数据所属的APP,对发布的私有数据生效,仅该app可以读取数据。 | 993| version | number | 否 | 要发布的数据版本,越大表示数据版本越新。如果发布的版本号小于数据库中的记录,则更新失败。<br/> 如果不检查要发布的数据版本,则不填。 | 994 995**返回值:** 996 997| 类型 | 说明 | 998| ---------------- | ------------------------------------------------------------ | 999| Promise<Array<[OperationResult](#operationresult10)>> | 发布数据结果。| 1000 1001**错误码:** 1002 1003以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1004 1005| 错误码ID | 错误信息 | 1006| -------- | -------------------------- | 1007| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1008| 15700012 | The data area is not exist.| 1009| 15700013 | The DataShareHelper instance is already closed.| 1010 1011**示例:** 1012 1013```ts 1014let dataArray: Array<dataShare.PublishedItem> = [ 1015 {key:"city", subscriberId:"11", data:"xian"}, 1016 {key:"datashareproxy://com.acts.ohos.data.datasharetest/appInfo", subscriberId:"11", data:"appinfo is just a test app"}, 1017 {key:"empty", subscriberId:"11", data:"nobody sub"}]; 1018if (dataShareHelper != undefined) { 1019 let result: Promise<Array<dataShare.OperationResult>> = (dataShareHelper as dataShare.DataShareHelper).publish(dataArray, "com.acts.ohos.data.datasharetest"); 1020} 1021``` 1022 1023### getPublishedData<sup>10+</sup> 1024 1025getPublishedData(bundleName: string, callback: AsyncCallback<Array<PublishedItem>>): void 1026 1027获取给定的APP和模板指定的数据。 1028 1029**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1030 1031**参数:** 1032 1033| 参数名 | 类型 | 必填 | 说明 | 1034| -------- | -----------------| ---- | ----------------------------- | 1035| bundleName | string | 是 | 表示数据所属的APP。 | 1036| callback | AsyncCallback<Array<[PublishedItem](#publisheditem10)>> | 是 | 回调函数,返回给定的APP和模板发布的数据。 | 1037 1038**错误码:** 1039 1040以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1041 1042| 错误码ID | 错误信息 | 1043| -------- | -------------------------- | 1044| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1045| 15700012 | The data area is not exist.| 1046| 15700013 | The DataShareHelper instance is already closed.| 1047 1048**示例:** 1049 1050```ts 1051import { BusinessError } from '@kit.BasicServicesKit' 1052 1053let publishCallback: (err: BusinessError, data: Array<dataShare.PublishedItem>) => void = (err: BusinessError, result: Array<dataShare.PublishedItem>): void => { 1054 console.info("**** Observer publish callback ****"); 1055} 1056if (dataShareHelper != undefined) { 1057 (dataShareHelper as dataShare.DataShareHelper).getPublishedData("com.acts.ohos.data.datasharetest", publishCallback); 1058} 1059``` 1060 1061### getPublishedData<sup>10+</sup> 1062 1063getPublishedData(bundleName: string): Promise<Array<PublishedItem>> 1064 1065获取给定的APP和模板指定的数据。 1066 1067**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1068 1069**参数:** 1070 1071| 参数名 | 类型 | 必填 | 说明 | 1072| -------- | --------------| ---- | -------------------------------------- | 1073| bundleName | string | 是 | 表示数据所属的APP。 | 1074 1075**返回值:** 1076 1077| 类型 | 说明 | 1078| ------------------------------------------------------------ | ----------------------------------- | 1079| Promise<Array<[PublishedItem](#publisheditem10)>> | Promise对象,返回给定的APP和模板发布的数据。 | 1080 1081**错误码:** 1082 1083以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1084 1085| 错误码ID | 错误信息 | 1086| -------- | -------------------------- | 1087| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1088| 15700012 | The data area is not exist.| 1089| 15700013 | The DataShareHelper instance is already closed.| 1090 1091**示例:** 1092 1093```ts 1094if (dataShareHelper != undefined) { 1095 let publishedData: Promise<Array<dataShare.PublishedItem>> = (dataShareHelper as dataShare.DataShareHelper).getPublishedData("com.acts.ohos.data.datasharetest"); 1096} 1097``` 1098 1099### insert 1100 1101insert(uri: string, value: ValuesBucket, callback: AsyncCallback<number>): void 1102 1103将单条数据插入数据库。使用callback异步回调。 1104 1105**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1106 1107**参数:** 1108 1109| 参数名 | 类型 | 必填 | 说明 | 1110| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 1111| uri | string | 是 | 要插入的数据的路径。 | 1112| value | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 要插入的数据。如果此参数为空,将插入一个空行。 | 1113| callback | AsyncCallback<number> | 是 | 回调函数。当将单条数据插入数据库成功,err为undefined,data为获取到的插入数据记录的索引;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不支持返回索引,故若服务端使用了不支持索引的数据库,则此callback也无法返回索引值。 | 1114 1115**错误码:** 1116 1117以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1118 1119| 错误码ID | 错误信息 | 1120| -------- | -------------------- | 1121| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1122| 15700013 | The DataShareHelper instance is already closed.| 1123 1124**示例:** 1125 1126```ts 1127import { ValuesBucket } from '@kit.ArkData' 1128import { BusinessError } from '@kit.BasicServicesKit' 1129 1130let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1131let key1: string = "name"; 1132let value1: string = "rose"; 1133let key2: string = "age"; 1134let value2: number = 22; 1135let key3: string = "salary"; 1136let value3: number = 200.5; 1137const valueBucket: ValuesBucket = { 1138 key1: value1, 1139 key2: value2, 1140 key3: value3, 1141} 1142try { 1143 if (dataShareHelper != undefined) { 1144 (dataShareHelper as dataShare.DataShareHelper).insert(uri, valueBucket, (err: BusinessError, data: number) => { 1145 if (err !== undefined) { 1146 console.error(`insert error: code: ${err.code}, message: ${err.message} `); 1147 return; 1148 } 1149 console.info("insert succeed, data : " + data); 1150 }); 1151 } 1152} catch (err) { 1153 let code = (err as BusinessError).code; 1154 let message = (err as BusinessError).message; 1155 console.error(`insert error: code: ${code}, message: ${message} `); 1156}; 1157``` 1158 1159### insert 1160 1161insert(uri: string, value: ValuesBucket): Promise<number> 1162 1163将单条数据插入数据库。使用Promise异步回调。 1164 1165**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1166 1167**参数:** 1168 1169| 参数名 | 类型 | 必填 | 说明 | 1170| ----- | --------------------------------------------------------- | ---- | -------------------------------------------------- | 1171| uri | string | 是 | 要插入的数据的路径。 | 1172| value | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 要插入的数据。如果此参数为空,将插入一个空行。 | 1173 1174**返回值:** 1175 1176| 类型 | 说明 | 1177| ---------------- | ------------------------------------------------------------ | 1178| Promise<number> | Promise对象。返回插入数据记录的索引。<br />因部分数据库(如KVDB)的相应接口并不支持返回索引,故若服务端使用了不支持索引的数据库,则此Promise也无法返回索引值。 | 1179 1180**错误码:** 1181 1182以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1183 1184| 错误码ID | 错误信息 | 1185| -------- | -------------------- | 1186| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1187| 15700013 | The DataShareHelper instance is already closed.| 1188 1189**示例:** 1190 1191```ts 1192import { BusinessError } from '@kit.BasicServicesKit' 1193import { ValuesBucket } from '@kit.ArkData' 1194 1195let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1196let key1: string = "name"; 1197let value1: string = "rose1"; 1198let key2: string = "age"; 1199let value2: number = 21; 1200let key3: string = "salary"; 1201let value3: number = 20.5; 1202const valueBucket: ValuesBucket = { 1203 key1: value1, 1204 key2: value2, 1205 key3: value3, 1206} 1207try { 1208 if (dataShareHelper != undefined) { 1209 (dataShareHelper as dataShare.DataShareHelper).insert(uri, valueBucket).then((data: number) => { 1210 console.info("insert succeed, data : " + data); 1211 }).catch((err: BusinessError) => { 1212 console.error(`insert error: code: ${err.code}, message: ${err.message} `); 1213 }); 1214 } 1215} catch (err) { 1216 let code = (err as BusinessError).code; 1217 let message = (err as BusinessError).message; 1218 console.error(`insert error: code: ${code}, message: ${message} `); 1219}; 1220``` 1221 1222### delete 1223 1224delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>): void 1225 1226从数据库中删除一条或多条数据记录。使用callback异步回调。 1227 1228**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1229 1230**参数:** 1231 1232| 参数名 | 类型 | 必填 | 说明 | 1233| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1234| uri | string | 是 | 要删除的数据的路径。 | 1235| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />delete接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词。谓词内方法为空时,默认全表删除。 | 1236| callback | AsyncCallback<number> | 是 | 回调函数。当从数据库中删除一条或多条数据记录成功,err为undefined,data为获取到的已删除的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此callback也无法返回删除的数据记录数。 | 1237 1238**错误码:** 1239 1240以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1241 1242| 错误码ID | 错误信息 | 1243| -------- | -------------------- | 1244| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1245| 15700013 | The DataShareHelper instance is already closed.| 1246 1247**示例:** 1248 1249```ts 1250import { dataSharePredicates } from '@kit.ArkData' 1251import { BusinessError } from '@kit.BasicServicesKit' 1252 1253let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1254let da = new dataSharePredicates.DataSharePredicates(); 1255da.equalTo("name", "ZhangSan"); 1256try { 1257 if (dataShareHelper != undefined) { 1258 (dataShareHelper as dataShare.DataShareHelper).delete(uri, da, (err: BusinessError, data: number) => { 1259 if (err !== undefined) { 1260 console.error(`delete error: code: ${err.code}, message: ${err.message} `); 1261 return; 1262 } 1263 console.info("delete succeed, data : " + data); 1264 }); 1265 } 1266} catch (err) { 1267 let code = (err as BusinessError).code; 1268 let message = (err as BusinessError).message; 1269 console.error(`delete error: code: ${code}, message: ${message} `); 1270}; 1271``` 1272 1273### delete 1274 1275delete(uri: string, predicates: dataSharePredicates.DataSharePredicates): Promise<number> 1276 1277从数据库中删除一条或多条数据记录。使用Promise异步回调。 1278 1279**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1280 1281**参数:** 1282 1283| 参数名 | 类型 | 必填 | 说明 | 1284| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1285| uri | string | 是 | 要删除的数据的路径。 | 1286| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />delete接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词。谓词内方法为空时,默认全表删除。 | 1287 1288**返回值:** 1289 1290| 类型 | 说明 | 1291| ---------------- | ------------------------------------------------------------ | 1292| Promise<number> | Promise对象。返回已删除的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回删除的数据记录数。 | 1293 1294**错误码:** 1295 1296以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1297 1298| 错误码ID | 错误信息 | 1299| -------- | -------------------- | 1300| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1301| 15700013 | The DataShareHelper instance is already closed.| 1302 1303**示例:** 1304 1305```ts 1306import { dataSharePredicates } from '@kit.ArkData' 1307import { BusinessError } from '@kit.BasicServicesKit' 1308 1309let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1310let da = new dataSharePredicates.DataSharePredicates(); 1311da.equalTo("name", "ZhangSan"); 1312try { 1313 if (dataShareHelper != undefined) { 1314 (dataShareHelper as dataShare.DataShareHelper).delete(uri, da).then((data: number) => { 1315 console.info("delete succeed, data : " + data); 1316 }).catch((err: BusinessError) => { 1317 console.error(`delete error: code: ${err.code}, message: ${err.message} `); 1318 }); 1319 } 1320} catch (err) { 1321 let code = (err as BusinessError).code; 1322 let message = (err as BusinessError).message; 1323 console.error(`delete error: code: ${code}, message: ${message} `); 1324}; 1325``` 1326 1327### query 1328 1329query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: AsyncCallback<DataShareResultSet>): void 1330 1331查询数据库中的数据。使用callback异步回调。 1332 1333**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1334 1335**参数:** 1336 1337| 参数名 | 类型 | 必填 | 说明 | 1338| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1339| uri | string | 是 | 要查询的数据的路径。 | 1340| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />query接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey。谓词内方法为空时,默认全表查询。 | 1341| columns | Array<string> | 是 | 要查询的列。如果此参数为空,则查询所有列。 | 1342| callback | AsyncCallback<[DataShareResultSet](js-apis-data-DataShareResultSet-sys.md#datashareresultset)> | 是 | 回调函数。当查询数据库中的数据成功,err为undefined,data为获取到的查询到的结果集;否则为错误对象。 | 1343 1344**错误码:** 1345 1346以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1347 1348| 错误码ID | 错误信息 | 1349| -------- | -------------------- | 1350| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1351| 15700013 | The DataShareHelper instance is already closed.| 1352 1353**示例:** 1354 1355```ts 1356import { dataSharePredicates, DataShareResultSet } from '@kit.ArkData' 1357import { BusinessError } from '@kit.BasicServicesKit' 1358 1359let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1360let columns = ["*"]; 1361let da = new dataSharePredicates.DataSharePredicates(); 1362da.equalTo("name", "ZhangSan"); 1363try { 1364 if (dataShareHelper != undefined) { 1365 (dataShareHelper as dataShare.DataShareHelper).query(uri, da, columns, (err: BusinessError, data: DataShareResultSet) => { 1366 if (err !== undefined) { 1367 console.error(`query error: code: ${err.code}, message: ${err.message} `); 1368 return; 1369 } 1370 console.info("query succeed, rowCount : " + data.rowCount); 1371 }); 1372 } 1373} catch (err) { 1374 let code = (err as BusinessError).code; 1375 let message = (err as BusinessError).message; 1376 console.error(`query error: code: ${code}, message: ${message} `); 1377}; 1378``` 1379 1380### query 1381 1382query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>): Promise<DataShareResultSet> 1383 1384查询数据库中的数据。使用Promise异步回调。 1385 1386**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1387 1388**参数:** 1389 1390| 参数名 | 类型 | 必填 | 说明 | 1391| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1392| uri | string | 是 | 要查询的数据的路径。 | 1393| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />query接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey。谓词内方法为空时,默认全表查询。 | 1394| columns | Array<string> | 是 | 要查询的列。如果此参数为空,则查询所有列。 | 1395 1396**返回值:** 1397 1398| 类型 | 说明 | 1399| ------------------------------------------------------------ | --------------------------------- | 1400| Promise<[DataShareResultSet](js-apis-data-DataShareResultSet-sys.md#datashareresultset)> | Promise对象。返回查询到的结果集。 | 1401 1402**错误码:** 1403 1404以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1405 1406| 错误码ID | 错误信息 | 1407| -------- | -------------------- | 1408| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1409| 15700013 | The DataShareHelper instance is already closed.| 1410 1411**示例:** 1412 1413```ts 1414import { dataSharePredicates, DataShareResultSet } from '@kit.ArkData' 1415import { BusinessError } from '@kit.BasicServicesKit' 1416 1417let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1418let columns = ["*"]; 1419let da = new dataSharePredicates.DataSharePredicates(); 1420da.equalTo("name", "ZhangSan"); 1421try { 1422 if (dataShareHelper != undefined) { 1423 (dataShareHelper as dataShare.DataShareHelper).query(uri, da, columns).then((data: DataShareResultSet) => { 1424 console.info("query succeed, rowCount : " + data.rowCount); 1425 }).catch((err: BusinessError) => { 1426 console.error(`query error: code: ${err.code}, message: ${err.message} `); 1427 }); 1428 } 1429} catch (err) { 1430 let code = (err as BusinessError).code; 1431 let message = (err as BusinessError).message; 1432 console.error(`query error: code: ${code}, message: ${message} `); 1433}; 1434``` 1435 1436### update 1437 1438update(uri: string, predicates: dataSharePredicates.DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void 1439 1440更新数据库中的数据记录。使用callback异步回调。 1441 1442**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1443 1444**参数:** 1445 1446| 参数名 | 类型 | 必填 | 说明 | 1447| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1448| uri | string | 是 | 要更新的数据的路径。 | 1449| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />update接口是否支持谓词筛选条件取决于服务端所选用的数据库,如KVDB目前并不支持谓词筛选条件,仅RDB支持。谓词内方法为空时,默认全表更新。 | 1450| value | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 要更新的数据。可以为null。 | 1451| callback | AsyncCallback<number> | 是 | 回调函数。当更新数据库中的数据记录成功,err为undefined,data为获取到的更新的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此callback也无法返回更新的数据记录数。 | 1452 1453**错误码:** 1454 1455以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1456 1457| 错误码ID | 错误信息 | 1458| -------- | -------------------- | 1459| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1460| 15700013 | The DataShareHelper instance is already closed.| 1461 1462**示例:** 1463 1464```ts 1465import { dataSharePredicates, ValuesBucket } from '@kit.ArkData' 1466import { BusinessError } from '@kit.BasicServicesKit' 1467 1468let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1469let da = new dataSharePredicates.DataSharePredicates(); 1470da.equalTo("name", "ZhangSan"); 1471let key1: string = "name"; 1472let value1: string = "roe1" 1473let key2: string = "age"; 1474let value2: number = 21 1475let key3: string = "salary"; 1476let value3: number = 20.5; 1477const va: ValuesBucket = { 1478 key1: value1, 1479 key2: value2, 1480 key3: value3, 1481} 1482try { 1483 if (dataShareHelper != undefined) { 1484 (dataShareHelper as dataShare.DataShareHelper).update(uri, da, va, (err: BusinessError, data: number) => { 1485 if (err !== undefined) { 1486 console.error(`update error: code: ${err.code}, message: ${err.message} `); 1487 return; 1488 } 1489 console.info("update succeed, data : " + data); 1490 }); 1491 } 1492} catch (err) { 1493 let code = (err as BusinessError).code; 1494 let message = (err as BusinessError).message; 1495 console.error(`update error: code: ${code}, message: ${message} `); 1496}; 1497``` 1498 1499### update 1500 1501update(uri: string, predicates: dataSharePredicates.DataSharePredicates, value: ValuesBucket): Promise<number> 1502 1503更新数据库中的数据记录。使用Promise异步回调。 1504 1505**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1506 1507**参数:** 1508 1509| 参数名 | 类型 | 必填 | 说明 | 1510| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1511| uri | string | 是 | 要更新的数据的路径。 | 1512| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 筛选条件。<br />update接口是否支持谓词筛选条件取决于服务端所选用的数据库,如KVDB目前并不支持谓词筛选条件,仅RDB支持。谓词内方法为空时,默认全表更新。 | 1513| value | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 要更新的数据。可以为null。 | 1514 1515**返回值:** 1516 1517| 类型 | 说明 | 1518| ---------------- | ------------------------------------------------------------ | 1519| Promise<number> | Promise对象。返回更新的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回更新的数据记录数。 | 1520 1521**错误码:** 1522 1523以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1524 1525| 错误码ID | 错误信息 | 1526| -------- | -------------------- | 1527| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1528| 15700013 | The DataShareHelper instance is already closed.| 1529 1530**示例:** 1531 1532```ts 1533import { dataSharePredicates, ValuesBucket } from '@kit.ArkData' 1534import { BusinessError } from '@kit.BasicServicesKit' 1535 1536let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1537let da = new dataSharePredicates.DataSharePredicates(); 1538da.equalTo("name", "ZhangSan"); 1539let key1: string = "name"; 1540let value1: string = "roe1" 1541let key2: string = "age"; 1542let value2: number = 21 1543let key3: string = "salary"; 1544let value3: number = 20.5; 1545const va: ValuesBucket = { 1546 key1: value1, 1547 key2: value2, 1548 key3: value3, 1549} 1550try { 1551 if (dataShareHelper != undefined) { 1552 (dataShareHelper as dataShare.DataShareHelper).update(uri, da, va).then((data: number) => { 1553 console.info("update succeed, data : " + data); 1554 }).catch((err: BusinessError) => { 1555 console.error(`update error: code: ${err.code}, message: ${err.message} `); 1556 }); 1557 } 1558} catch (err) { 1559 let code = (err as BusinessError).code; 1560 let message = (err as BusinessError).message; 1561 console.error(`update error: code: ${code}, message: ${message} `); 1562}; 1563``` 1564 1565### batchUpdate<sup>12+</sup> 1566 1567batchUpdate(operations: Record<string, Array<UpdateOperation>>): Promise<Record<string, Array<number>>> 1568 1569批量更新数据库中的数据记录,Record最多支持900K的数据,超出该限制更新失败;该接口的事务性取决于provider(数据提供方)。使用Promise异步回调。暂不支持静默访问。 1570 1571**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1572 1573**参数:** 1574 1575| 参数名 | 类型 | 必填 | 说明 | 1576| ---------- | ------------------------------------------------------------ | ---- | -------------------------------------- | 1577| operations | Record<string, Array<[UpdateOperation](#updateoperation12)>> | 是 | 要更新数据的路径、筛选条件和数据集合。 | 1578 1579**返回值:** 1580 1581| 类型 | 说明 | 1582| ----------------------------------------------------- | ------------------------------------------------------------ | 1583| Promise<Record<string, Array<number>>> | Promise对象。返回更新的数据记录数集合,更新失败的UpdateOperation的数据记录数为-1。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回更新的数据记录数。 | 1584 1585**错误码:** 1586 1587以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1588 1589| 错误码ID | 错误信息 | 1590| -------- | ------------------------------------ | 1591| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1592| 15700000 | Inner error. | 1593| 15700013 | The DataShareHelper instance is already closed. | 1594 1595**示例:** 1596 1597```ts 1598import { dataSharePredicates, ValuesBucket } from '@kit.ArkData' 1599import { BusinessError } from '@kit.BasicServicesKit' 1600 1601let record: Record<string, Array<dataShare.UpdateOperation>> = {}; 1602let operations1: Array<dataShare.UpdateOperation> = []; 1603let operations2: Array<dataShare.UpdateOperation> = []; 1604 1605let pre1: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1606pre1.equalTo("name", "ZhangSan"); 1607let vb1: ValuesBucket = { 1608 "name": "ZhangSan1", 1609} 1610let operation1: dataShare.UpdateOperation = { 1611 values: vb1, 1612 predicates: pre1 1613} 1614operations1.push(operation1); 1615 1616let pre2: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1617pre2.equalTo("name", "ZhangSan2"); 1618let vb2: ValuesBucket = { 1619 "name": "ZhangSan3", 1620} 1621let operation2: dataShare.UpdateOperation = { 1622 values: vb2, 1623 predicates: pre2 1624} 1625operations2.push(operation2); 1626record["uri1"] = operations1; 1627record["uri2"] = operations2; 1628 1629try { 1630 if (dataShareHelper != undefined) { 1631 (dataShareHelper as dataShare.DataShareHelper).batchUpdate(record).then((data: Record<string, Array<number>>) => { 1632 // 遍历data获取每条数据的更新结果, value为更新成功的数据记录数,若小于0,说明该次更新失败 1633 let a = Object.entries(data); 1634 for (let i = 0; i < a.length; i++) { 1635 let key = a[i][0]; 1636 let values = a[i][1] 1637 console.info(`Update uri:${key}`); 1638 for (const value of values) { 1639 console.info(`Update result:${value}`); 1640 } 1641 } 1642 }).catch((err: BusinessError) => { 1643 console.error(`Batch update error: code: ${err.code}, message: ${err.message} `); 1644 }); 1645 } 1646} catch (err) { 1647 let code = (err as BusinessError).code; 1648 let message = (err as BusinessError).message; 1649 console.error(`Batch update error: code: ${code}, message: ${message} `); 1650}; 1651``` 1652 1653### batchInsert 1654 1655batchInsert(uri: string, values: Array<ValuesBucket>, callback: AsyncCallback<number>): void 1656 1657将批量数据插入数据库。使用callback异步回调。暂不支持静默访问。 1658 1659**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1660 1661**参数:** 1662 1663| 参数名 | 类型 | 必填 | 说明 | 1664| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 1665| uri | string | 是 | 要插入的数据的路径。 | 1666| values | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 要插入的数据。 | 1667| callback | AsyncCallback<number> | 是 | 回调函数。当将批量数据插入数据库成功,err为undefined,data为获取到的插入的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回插入的数据记录数。 | 1668 1669**错误码:** 1670 1671以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1672 1673| 错误码ID | 错误信息 | 1674| -------- | -------------------- | 1675| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1676| 15700013 | The DataShareHelper instance is already closed.| 1677 1678**示例:** 1679 1680```ts 1681import { ValuesBucket } from '@kit.ArkData' 1682import { BusinessError } from '@kit.BasicServicesKit' 1683 1684let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1685let key1: string = "name"; 1686let value11: string = "roe11" 1687let key2: string = "age"; 1688let value21: number = 21; 1689let key3: string = "salary"; 1690let value31: number = 20.5; 1691let valuesBucket1: ValuesBucket = { 1692 key1: value11, 1693 key2: value21, 1694 key3: value31, 1695} 1696let vbs = new Array(valuesBucket1); 1697try { 1698 if (dataShareHelper != undefined) { 1699 (dataShareHelper as dataShare.DataShareHelper).batchInsert(uri, vbs, (err, data) => { 1700 if (err !== undefined) { 1701 console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `); 1702 return; 1703 } 1704 console.info("batchInsert succeed, data : " + data); 1705 }); 1706 } 1707} catch (err) { 1708 let code = (err as BusinessError).code; 1709 let message = (err as BusinessError).message; 1710 console.error(`batchInsert error: code: ${code}, message: ${message} `); 1711}; 1712``` 1713 1714### batchInsert 1715 1716batchInsert(uri: string, values: Array<ValuesBucket>): Promise<number> 1717 1718将批量数据插入数据库。使用Promise异步回调。暂不支持静默访问。 1719 1720**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1721 1722**参数:** 1723 1724| 参数名 | 类型 | 必填 | 说明 | 1725| ------ | ------------------------------------------------------------ | ---- | ------------------------ | 1726| uri | string | 是 | 要插入的数据的路径。 | 1727| values | Array<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | 是 | 要插入的数据。 | 1728 1729**返回值:** 1730 1731| 类型 | 说明 | 1732| ---------------- | ------------------------------------------------------------ | 1733| Promise<number> | Promise对象。返回插入的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回插入的数据记录数。 | 1734 1735**错误码:** 1736 1737以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1738 1739| 错误码ID | 错误信息 | 1740| -------- | -------------------- | 1741| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1742| 15700013 | The DataShareHelper instance is already closed.| 1743 1744**示例:** 1745 1746```ts 1747import { ValuesBucket } from '@kit.ArkData' 1748import { BusinessError } from '@kit.BasicServicesKit' 1749 1750let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1751let key1: string = "name"; 1752let value11: string = "roe11" 1753let key2: string = "age"; 1754let value21: number = 21; 1755let key3: string = "salary"; 1756let value31: number = 20.5; 1757let valuesBucket1: ValuesBucket = { 1758 key1: value11, 1759 key2: value21, 1760 key3: value31, 1761} 1762let vbs = new Array(valuesBucket1); 1763try { 1764 if (dataShareHelper != undefined) { 1765 (dataShareHelper as dataShare.DataShareHelper).batchInsert(uri, vbs).then((data: number) => { 1766 console.info("batchInsert succeed, data : " + data); 1767 }).catch((err: BusinessError) => { 1768 console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `); 1769 }); 1770 } 1771} catch (err) { 1772 let code = (err as BusinessError).code; 1773 let message = (err as BusinessError).message 1774 console.error(`batchInsert error: code: ${code}, message: ${message} `); 1775}; 1776``` 1777 1778### close<sup>12+</sup> 1779 1780close(): Promise <void> 1781 1782关闭DataShareHelper实例,调用后该实例失效。使用Promise异步回调。 1783 1784**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1785 1786**返回值:** 1787 1788| 类型 | 说明 | 1789| ------------------- | -------------------------------------- | 1790| Promise<void> | 无返回结果的Promise对象。 | 1791 1792**错误码:** 1793 1794以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)。 1795 1796| 错误码ID | 错误信息 | 1797| -------- | ------------ | 1798| 15700000 | Inner error. | 1799 1800**示例:** 1801 1802```ts 1803if (dataShareHelper != undefined) { 1804 (dataShareHelper as dataShare.DataShareHelper).close(); 1805} 1806``` 1807 1808### normalizeUri 1809 1810normalizeUri(uri: string, callback: AsyncCallback<string>): void 1811 1812将给定的DataShare URI转换为规范化URI,规范化URI可供跨设备使用,DataShare URI仅供本地环境中使用。使用callback异步回调。暂不支持静默访问。 1813 1814**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1815 1816**参数:** 1817 1818| 参数名 | 类型 | 必填 | 说明 | 1819| -------- | ---------------------- | ---- | -------------------------------------------------------- | 1820| uri | string | 是 | 要规范化的[URI](../apis-arkts/js-apis-uri.md#uri)。 | 1821| callback | AsyncCallback<string> | 是 | 回调函数。当将给定的DataShare URI转换为规范化URI成功,err为undefined,data为获取到的规范化URI(如果支持URI规范化,则返回规范化URI,否则返回空);否则为错误对象。 | 1822 1823**错误码:** 1824 1825以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1826 1827| 错误码ID | 错误信息 | 1828| -------- | -------------------- | 1829| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1830| 15700013 | The DataShareHelper instance is already closed.| 1831 1832**示例:** 1833 1834```ts 1835import { BusinessError } from '@kit.BasicServicesKit' 1836 1837let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1838if (dataShareHelper != undefined) { 1839 (dataShareHelper as dataShare.DataShareHelper).normalizeUri(uri, (err: BusinessError, data: string) => { 1840 if (err !== undefined) { 1841 console.info("normalizeUri failed, error message : " + err); 1842 } else { 1843 console.info("normalizeUri = " + data); 1844 } 1845 }); 1846} 1847``` 1848 1849### normalizeUri 1850 1851normalizeUri(uri: string): Promise<string> 1852 1853将给定的DataShare URI转换为规范化URI,规范化URI可供跨设备使用,DataShare URI仅供本地环境中使用。使用Promise异步回调。暂不支持静默访问。 1854 1855**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1856 1857**参数:** 1858 1859| 参数名 | 类型 | 必填 | 说明 | 1860| ---- | ------ | ---- | ----------------------------------------- | 1861| uri | string | 是 | 要规范化的[URI](../apis-arkts/js-apis-uri.md#uri)。 | 1862 1863**返回值:** 1864 1865| 类型 | 说明 | 1866| ---------------- | ---------------------------------------------- | 1867| Promise<string> | Promise对象。如果支持URI规范化,则返回规范化URI,否则返回空。 | 1868 1869**错误码:** 1870 1871以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1872 1873| 错误码ID | 错误信息 | 1874| -------- | -------------------- | 1875| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1876| 15700013 | The DataShareHelper instance is already closed.| 1877 1878**示例:** 1879 1880```ts 1881import { BusinessError } from '@kit.BasicServicesKit' 1882 1883let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1884if (dataShareHelper != undefined) { 1885 (dataShareHelper as dataShare.DataShareHelper).normalizeUri(uri).then((data: string) => { 1886 console.info("normalizeUri = " + data); 1887 }).catch((err: BusinessError) => { 1888 console.info("normalizeUri failed, error message : " + err); 1889 }); 1890} 1891``` 1892 1893### denormalizeUri 1894 1895denormalizeUri(uri: string, callback: AsyncCallback<string>): void 1896 1897将指定的URI转换为非规范化URI。使用callback异步回调。暂不支持静默访问。 1898 1899**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1900 1901**参数:** 1902 1903| 参数名 | 类型 | 必填 | 说明 | 1904| -------- | ---------------------- | ---- | --------------------------------------------------- | 1905| uri | string | 是 | 要反规范化的[URI](../apis-arkts/js-apis-uri.md#uri)。 | 1906| callback | AsyncCallback<string> | 是 | 回调函数。当将指定的URI转换为非规范化URI,err为undefined,data为获取到的反规范化URI(如果反规范化成功,则返回反规范化的URI;如果无需进行反规范化,则返回原始URI;若不支持则返回空);否则为错误对象。 | 1907 1908**错误码:** 1909 1910以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1911 1912| 错误码ID | 错误信息 | 1913| -------- | -------------------- | 1914| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1915| 15700013 | The DataShareHelper instance is already closed.| 1916 1917**示例:** 1918 1919```ts 1920import { BusinessError } from '@kit.BasicServicesKit' 1921 1922let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1923if (dataShareHelper != undefined) { 1924 (dataShareHelper as dataShare.DataShareHelper).denormalizeUri(uri, (err: BusinessError, data: string) => { 1925 if (err !== undefined) { 1926 console.error("denormalizeUri failed, error message : " + err); 1927 } else { 1928 console.info("denormalizeUri = " + data); 1929 } 1930 }); 1931} 1932``` 1933 1934### denormalizeUri 1935 1936denormalizeUri(uri: string): Promise<string> 1937 1938将指定的URI转换为非规范化URI。使用Promise异步回调。暂不支持静默访问。 1939 1940**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1941 1942**参数:** 1943 1944| 参数名 | 类型 | 必填 | 说明 | 1945| ---- | ------ | ---- | ------------------------------------------- | 1946| uri | string | 是 | 要反规范化的[URI](../apis-arkts/js-apis-uri.md#uri)。 | 1947 1948**返回值:** 1949 1950| 类型 | 说明 | 1951| ---------------- | ----------------------------------------- | 1952| Promise<string> | Promise对象。如果反规范化成功,则返回反规范化的URI;如果无需执行任何操作,则返回原始URI;若不支持则返回空。 | 1953 1954**错误码:** 1955 1956以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1957 1958| 错误码ID | 错误信息 | 1959| -------- | -------------------- | 1960| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 1961| 15700013 | The DataShareHelper instance is already closed.| 1962 1963**示例:** 1964 1965```ts 1966import { BusinessError } from '@kit.BasicServicesKit' 1967 1968let uri = ("datashare:///com.samples.datasharetest.DataShare"); 1969if (dataShareHelper != undefined) { 1970 (dataShareHelper as dataShare.DataShareHelper).denormalizeUri(uri).then((data: string) => { 1971 console.info("denormalizeUri = " + data); 1972 }).catch((err: BusinessError) => { 1973 console.error("denormalizeUri failed, error message : " + err); 1974 }); 1975} 1976``` 1977 1978### notifyChange 1979 1980notifyChange(uri: string, callback: AsyncCallback<void>): void 1981 1982通知已注册的观察者指定URI对应的数据资源已发生变更。使用callback异步回调。暂不支持静默访问。 1983 1984**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 1985 1986**参数:** 1987 1988| 参数名 | 类型 | 必填 | 说明 | 1989| -------- | -------------------- | ---- | ------------------------ | 1990| uri | string | 是 | 表示指定的数据路径。 | 1991| callback | AsyncCallback<void> | 是 | 回调函数。当通知已注册的观察者指定URI对应的数据资源已发生变更成功,err为undefined;否则为错误对象。 | 1992 1993**错误码:** 1994 1995以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 1996 1997| 错误码ID | 错误信息 | 1998| -------- | -------------------- | 1999| 401 | Parameter error.Mandatory parameters are left unspecified.| 2000| 15700013 | The DataShareHelper instance is already closed.| 2001 2002**示例:** 2003 2004```ts 2005let uri = ("datashare:///com.samples.datasharetest.DataShare"); 2006if (dataShareHelper != undefined) { 2007 (dataShareHelper as dataShare.DataShareHelper).notifyChange(uri, () => { 2008 console.info("***** notifyChange *****"); 2009 }); 2010} 2011``` 2012 2013### notifyChange 2014 2015notifyChange(uri: string): Promise<void> 2016 2017通知已注册的观察者指定URI对应的数据资源已发生变更。使用Promise异步回调。暂不支持静默访问。 2018 2019**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 2020 2021**参数:** 2022 2023| 参数名 | 类型 | 必填 | 说明 | 2024| ---- | ------ | ---- | -------------------- | 2025| uri | string | 是 | 表示指定的数据路径。 | 2026 2027**返回值:** 2028 2029| 类型 | 说明 | 2030| -------------- | --------------------- | 2031| Promise<void> | Promise对象。无返回结果的Promise对象。 | 2032 2033**错误码:** 2034 2035以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 2036 2037| 错误码ID | 错误信息 | 2038| -------- | -------------------- | 2039| 401 | Parameter error.Mandatory parameters are left unspecified.| 2040| 15700013 | The DataShareHelper instance is already closed.| 2041 2042**示例:** 2043 2044```ts 2045let uri = ("datashare:///com.samples.datasharetest.DataShare"); 2046if (dataShareHelper != undefined) { 2047 (dataShareHelper as dataShare.DataShareHelper).notifyChange(uri); 2048} 2049``` 2050 2051### notifyChange<sup>12+</sup> 2052 2053notifyChange(data: ChangeInfo): Promise<void> 2054 2055通知已注册的观察者指定URI对应的数据资源已发生变更类型及变更内容。使用Promise异步回调。暂不支持静默访问。 2056 2057**系统能力:** SystemCapability.DistributedDataManager.DataShare.Consumer 2058 2059**参数:** 2060 2061| 参数名 | 类型 | 必填 | 说明 | 2062| ---- | ------ | ---- | -------------------- | 2063| data | [ChangeInfo](#changeinfo12) | 是 | 表示数据变更类型、变化的uri、变更的数据内容。 | 2064 2065**返回值:** 2066 2067| 类型 | 说明 | 2068| -------------- | --------------------- | 2069| Promise<void> | 无返回结果的Promise对象。 | 2070 2071**错误码:** 2072 2073以下错误码的详细介绍请参见[数据共享错误码](errorcode-datashare.md)和[通用错误码](../errorcode-universal.md)。 2074 2075| 错误码ID | 错误信息 | 2076| -------- | -------------------- | 2077| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified; 2.Incorrect parameters types.| 2078| 15700013 | The DataShareHelper instance is already closed.| 2079 2080**示例:** 2081 2082```ts 2083import { ValuesBucket } from '@kit.ArkData' 2084 2085let dsUri = ("datashare:///com.acts.datasharetest"); 2086let bucket1: ValuesBucket = {"name": "LiSi"}; 2087let bucket2: ValuesBucket = {"name": "WangWu"}; 2088let bucket3: ValuesBucket = {"name": "ZhaoLiu"}; 2089let people: Array<ValuesBucket> = new Array(bucket1, bucket2, bucket3); 2090let changeData:dataShare.ChangeInfo= { type:dataShare.ChangeType.INSERT, uri:dsUri, values:people}; 2091if (dataShareHelper != undefined) { 2092 (dataShareHelper as dataShare.DataShareHelper).notifyChange(changeData); 2093} 2094```