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