• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 '@ohos.data.dataShare'
18```
19
20## uri命名规则
21
22标准uri定义结构如下:
23
24**Scheme://authority/path**
25- Scheme: 协议名,对于data share统一为datashare
26- authority: [userinfo@]host[:port]
27    - userinfo: 登录信息,不需要填写。
28    - host: 服务器地址,如果跨设备访问则为目标设备的ID,如果为本设备则为空。
29    - port: 服务器端口,不需要填写。
30- path: data share的标识信息和资源的路径信息,需要包含data share的标识信息,资源的路径信息可以不填写。
31
32uri示例:
33
34- 不包含资源路径: `datashare:///com.samples.datasharetest.DataShare`
35
36- 包含资源路径: `datashare:///com.samples.datasharetest.DataShare/DB00/TBL00`
37
38其中,data share的标识信息为`com.samples.datasharetest.DataShare`,资源路径为`DB00/TBL00`。
39
40## dataShare.createDataShareHelper
41
42createDataShareHelper(context: Context, uri: string, callback: AsyncCallback<DataShareHelper>): void
43
44创建DataShareHelper实例。使用callback异步回调。
45
46**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
47
48**参数:**
49
50| 参数名   | 类型                                                 | 必填 | 说明                                                         |
51| -------- | -------------------------------------------------------- | ---- | ------------------------------------------------------------ |
52| context  | [Context](js-apis-app-ability-uiAbility.md)        | 是   | 应用的上下文环境。                                           |
53| uri      | string                                                   | 是   | 指示要连接的服务端应用的路径。                               |
54| callback | AsyncCallback<[DataShareHelper](#datasharehelper)> | 是   | 回调函数。当创建DataShareHelper实例成功,err为undefined,data为获取到的DataShareHelper实例;否则为错误对象。 |
55
56**错误码:**
57
58以下错误码的详细介绍请参见[数据共享错误码](../errorcodes/errorcode-datashare.md)。
59
60| 错误码ID | 错误信息                                             |
61| -------- | ---------------------------------------------------- |
62| 15700010 | The dataShareHelper is not initialized successfully. |
63
64**示例:**
65
66```ts
67import UIAbility from '@ohos.app.ability.UIAbility'
68
69let uri = ("datashare:///com.samples.datasharetest.DataShare");
70let dataShareHelper;
71try {
72    dataShare.createDataShareHelper(this.context, uri, (err, data) => {
73        if (err != undefined) {
74            console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `);
75            return;
76        }
77        console.info("createDataShareHelper succeed, data : " + data);
78        dataShareHelper = data;
79    });
80} catch (err) {
81    console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `);
82};
83```
84
85## dataShare.createDataShareHelper
86
87createDataShareHelper(context: Context, uri: string): Promise<DataShareHelper>
88
89创建DataShareHelper实例。使用Promise异步回调。
90
91**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
92
93**参数:**
94
95| 参数名  | 类型                                          | 必填 | 说明                           |
96| ------- | ------------------------------------------------- | ---- | ------------------------------ |
97| context | [Context](js-apis-app-ability-uiAbility.md) | 是   | 应用的上下文环境。             |
98| uri     | string                                            | 是   | 指示要连接的服务端应用的路径。 |
99
100**返回值:**
101
102| 类型                                               | 说明                                   |
103| -------------------------------------------------- | -------------------------------------- |
104| Promise<[DataShareHelper](#datasharehelper)> | Promise对象。返回DataShareHelper实例。 |
105
106**错误码:**
107
108以下错误码的详细介绍请参见[数据共享错误码](../errorcodes/errorcode-datashare.md)。
109
110| 错误码ID | 错误信息                                             |
111| -------- | ---------------------------------------------------- |
112| 15700010 | The dataShareHelper is not initialized successfully. |
113
114**示例:**
115
116```ts
117import UIAbility from '@ohos.app.ability.UIAbility'
118
119let uri = ("datashare:///com.samples.datasharetest.DataShare");
120let dataShareHelper;
121try {
122    dataShare.createDataShareHelper(this.context, uri).then((data) => {
123        console.info("createDataShareHelper succeed, data : " + data);
124        dataShareHelper = data;
125    }). catch((err) => {
126        console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `);
127    });
128} catch (err) {
129    console.error(`createDataShareHelper error: code: ${err.code}, message: ${err.message} `);
130};
131```
132
133## DataShareHelper
134
135DataShare管理工具实例,可使用此实例访问或管理服务端的数据。在调用DataShareHelper提供的方法前,需要先通过[createDataShareHelper](#datasharecreatedatasharehelper)构建一个实例。
136
137### on('dataChange')
138
139on(type: 'dataChange', uri: string, callback: AsyncCallback<void>): void
140
141订阅指定URI对应数据的数据变更事件。若用户(订阅者)已注册了观察者,当有其他用户触发了变更通知时(调用了下文中的notifyChange方法),订阅者将会接收到callback通知。使用callback异步回调。
142
143**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
144
145**参数:**
146
147| 参数名     | 类型                 | 必填 | 说明                    |
148| -------- | -------------------- | ---- | ------------------------ |
149| type     | string               | 是   | 订阅的事件/回调类型,支持的事件为'dataChange',当数据更改时,触发该事件。 |
150| uri      | string               | 是   | 表示指定的数据路径。 |
151| callback | AsyncCallback<void> | 是   | 回调函数。当有其他用户触发了变更通知时调用,err为undefined;否则不被触发或为错误对象。 |
152
153**示例:**
154
155```ts
156import UIAbility from '@ohos.app.ability.UIAbility'
157function onCallback() {
158    console.info("**** Observer on callback ****");
159}
160let uri = ("datashare:///com.samples.datasharetest.DataShare");
161dataShareHelper.on("dataChange", uri, onCallback);
162```
163
164### off('dataChange')
165
166off(type: 'dataChange', uri: string, callback?: AsyncCallback<void>): void
167
168取消订阅指定URI对应的数据资源的变更通知。使用callback异步回调。
169
170**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
171
172**参数:**
173
174| 参数名     | 类型                 | 必填 | 说明                    |
175| -------- | -------------------- | ---- | ------------------------ |
176| type     | string               | 是   | 取消订阅的事件/回调类型,支持的事件为'dataChange'。 |
177| uri      | string               | 是   | 表示指定的数据路径。 |
178| callback | AsyncCallback<void> | 否   | 回调函数。当取消订阅指定URI对应的数据资源的变更通知成功,err为undefined;否则为错误对象。 |
179
180**示例:**
181
182```ts
183import UIAbility from '@ohos.app.ability.UIAbility'
184function offCallback() {
185    console.info("**** Observer off callback ****");
186}
187let uri = ("datashare:///com.samples.datasharetest.DataShare");
188dataShareHelper.off("dataChange", uri, offCallback);
189```
190
191### insert
192
193insert(uri: string, value: ValuesBucket, callback: AsyncCallback<number>): void
194
195将单条数据插入数据库。使用callback异步回调。
196
197**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
198
199**参数:**
200
201| 参数名     | 类型                                                      | 必填 | 说明                                                        |
202| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
203| uri      | string                                                    | 是   | 指示要插入的数据的路径。                                     |
204| value    | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是   | 指示要插入的数据。如果此参数为空,将插入一个空行。           |
205| callback | AsyncCallback&lt;number&gt;                               | 是   | 回调函数。当将单条数据插入数据库成功,err为undefined,data为获取到的插入数据记录的索引;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不支持返回索引,故若服务端使用了不支持索引的数据库,则此callback也无法返回索引值。 |
206
207**示例:**
208
209```ts
210import UIAbility from '@ohos.app.ability.UIAbility'
211let uri = ("datashare:///com.samples.datasharetest.DataShare");
212const valueBucket = {
213    "name": "rose",
214    "age": 22,
215    "salary": 200.5,
216}
217try {
218    dataShareHelper.insert(uri, valueBucket, (err, data) => {
219        if (err != undefined) {
220            console.error(`insert error: code: ${err.code}, message: ${err.message} `);
221            return;
222        }
223        console.info("insert succeed, data : " + data);
224    });
225} catch (err) {
226    console.error(`insert error: code: ${err.code}, message: ${err.message} `);
227};
228```
229
230### insert
231
232insert(uri: string, value: ValuesBucket): Promise&lt;number&gt;
233
234将单条数据插入数据库。使用Promise异步回调。
235
236**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
237
238**参数:**
239
240| 参数名  | 类型                                                      | 必填 | 说明                                               |
241| ----- | --------------------------------------------------------- | ---- | -------------------------------------------------- |
242| uri   | string                                                    | 是   | 指示要插入的数据的路径。                           |
243| value | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是   | 指示要插入的数据。如果此参数为空,将插入一个空行。 |
244
245**返回值:**
246
247| 类型             | 说明                                                         |
248| ---------------- | ------------------------------------------------------------ |
249| Promise&lt;number&gt; | Promise对象。返回插入数据记录的索引。<br />因部分数据库(如KVDB)的相应接口并不支持返回索引,故若服务端使用了不支持索引的数据库,则此Promise也无法返回索引值。 |
250
251**示例:**
252
253```ts
254import UIAbility from '@ohos.app.ability.UIAbility'
255let uri = ("datashare:///com.samples.datasharetest.DataShare");
256const valueBucket = {
257    "name": "rose1",
258    "age": 221,
259    "salary": 20.5,
260}
261try {
262    dataShareHelper.insert(uri, valueBucket).then((data) => {
263        console.log("insert succeed, data : " + data);
264    }). catch((err) => {
265        console.error(`insert error: code: ${err.code}, message: ${err.message} `);
266    });
267} catch (err) {
268    console.error(`insert error: code: ${err.code}, message: ${err.message} `);
269};
270```
271
272### delete
273
274delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;): void
275
276从数据库中删除一条或多条数据记录。使用callback异步回调。
277
278**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
279
280**参数:**
281
282| 参数名       | 类型                                                         | 必填 | 说明                                                         |
283| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
284| uri        | string                                                       | 是   | 指示要删除的数据的路径。                                     |
285| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />delete接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词。 |
286| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 回调函数。当从数据库中删除一条或多条数据记录成功,err为undefined,data为获取到的已删除的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此callback也无法返回删除的数据记录数。 |
287
288**示例:**
289
290```ts
291import UIAbility from '@ohos.app.ability.UIAbility'
292import dataSharePredicates from '@ohos.data.dataSharePredicates'
293
294let uri = ("datashare:///com.samples.datasharetest.DataShare");
295let da = new dataSharePredicates.DataSharePredicates();
296da.equalTo("name", "ZhangSan");
297try {
298    dataShareHelper.delete(uri, da, (err, data) => {
299        if (err != undefined) {
300            console.error(`delete error: code: ${err.code}, message: ${err.message} `);
301            return;
302        }
303        console.info("delete succeed, data : " + data);
304    });
305} catch (err) {
306    console.error(`delete error: code: ${err.code}, message: ${err.message} `);
307};
308```
309
310### delete
311
312delete(uri: string, predicates: dataSharePredicates.DataSharePredicates): Promise&lt;number&gt;
313
314从数据库中删除一条或多条数据记录。使用Promise异步回调。
315
316**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
317
318**参数:**
319
320| 参数名       | 类型                                                         | 必填 | 说明                                                         |
321| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
322| uri        | string                                                       | 是   | 指示要删除的数据的路径。                                     |
323| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />delete接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词。 |
324
325**返回值:**
326
327| 类型             | 说明                                                         |
328| ---------------- | ------------------------------------------------------------ |
329| Promise&lt;number&gt; | Promise对象。返回已删除的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回删除的数据记录数。 |
330
331**示例:**
332
333```ts
334import UIAbility from '@ohos.app.ability.UIAbility'
335import dataSharePredicates from '@ohos.data.dataSharePredicates'
336
337let uri = ("datashare:///com.samples.datasharetest.DataShare");
338let da = new dataSharePredicates.DataSharePredicates();
339da.equalTo("name", "ZhangSan");
340try {
341    dataShareHelper.delete(uri, da).then((data) =>  {
342        console.log("delete succeed, data : " + data);
343    }). catch((err) => {
344        console.error(`delete error: code: ${err.code}, message: ${err.message} `);
345    });
346} catch (err) {
347    console.error(`delete error: code: ${err.code}, message: ${err.message} `);
348};
349```
350
351### query
352
353query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;DataShareResultSet&gt;): void
354
355查询数据库中的数据。使用callback异步回调。
356
357**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
358
359**参数:**
360
361| 参数名       | 类型                                                         | 必填 | 说明                                                         |
362| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
363| uri        | string                                                       | 是   | 指示要查询的数据的路径。                                     |
364| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />query接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey。 |
365| columns    | Array&lt;string&gt;                                          | 是   | 指示要查询的列。如果此参数为空,则查询所有列。               |
366| callback   | AsyncCallback&lt;[DataShareResultSet](js-apis-data-DataShareResultSet.md#datashareresultset)&gt; | 是   | 回调函数。当查询数据库中的数据成功,err为undefined,data为获取到的查询到的结果集;否则为错误对象。 |
367
368**示例:**
369
370```ts
371import UIAbility from '@ohos.app.ability.UIAbility'
372import dataSharePredicates from '@ohos.data.dataSharePredicates'
373
374let uri = ("datashare:///com.samples.datasharetest.DataShare");
375let columns = ["*"];
376let da = new dataSharePredicates.DataSharePredicates();
377da.equalTo("name", "ZhangSan");
378try {
379    dataShareHelper.query(uri, da, columns, (err, data) => {
380        if (err != undefined) {
381            console.error(`query error: code: ${err.code}, message: ${err.message} `);
382            return;
383        }
384        console.log("query succeed, rowCount : " + data.rowCount);
385    });
386} catch (err) {
387    console.error(`query error: code: ${err.code}, message: ${err.message} `);
388};
389```
390
391### query
392
393query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;): Promise&lt;DataShareResultSet&gt;
394
395查询数据库中的数据。使用Promise异步回调。
396
397**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
398
399**参数:**
400
401| 参数名       | 类型                                                         | 必填 | 说明                                                         |
402| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
403| uri        | string                                                       | 是   | 指示要查询的数据的路径。                                     |
404| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />query接口所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey。 |
405| columns    | Array&lt;string&gt;                                          | 是   | 指示要查询的列。如果此参数为空,则查询所有列。               |
406
407**返回值:**
408
409| 类型                                                         | 说明                              |
410| ------------------------------------------------------------ | --------------------------------- |
411| Promise&lt;[DataShareResultSet](js-apis-data-DataShareResultSet.md#datashareresultset)&gt; | Promise对象。返回查询到的结果集。 |
412
413**示例:**
414
415```ts
416import UIAbility from '@ohos.app.ability.UIAbility'
417import dataSharePredicates from '@ohos.data.dataSharePredicates'
418
419let uri = ("datashare:///com.samples.datasharetest.DataShare");
420let columns = ["*"];
421let da = new dataSharePredicates.DataSharePredicates();
422da.equalTo("name", "ZhangSan");
423try {
424    dataShareHelper.query(uri, da, columns).then((data) =>  {
425        console.log("query succeed, rowCount : " + data.rowCount);
426    }). catch((err) => {
427        console.error(`query error: code: ${err.code}, message: ${err.message} `);
428    });
429} catch (err) {
430    console.error(`query error: code: ${err.code}, message: ${err.message} `);
431};
432```
433
434### update
435
436update(uri: string, predicates: dataSharePredicates.DataSharePredicates, value: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
437
438更新数据库中的数据记录。使用callback异步回调。
439
440**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
441
442**参数:**
443
444| 参数名       | 类型                                                         | 必填 | 说明                                                         |
445| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
446| uri        | string                                                       | 是   | 指示要更新的数据的路径。                                     |
447| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />update接口是否支持谓词筛选条件取决于服务端所选用的数据库,如KVDB目前并不支持谓词筛选条件,仅RDB支持。 |
448| value      | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)    | 是   | 指示要更新的数据。                                           |
449| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 回调函数。当更新数据库中的数据记录成功,err为undefined,data为获取到的更新的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此callback也无法返回更新的数据记录数。 |
450
451**示例:**
452
453```ts
454import UIAbility from '@ohos.app.ability.UIAbility'
455import dataSharePredicates from '@ohos.data.dataSharePredicates'
456
457let uri = ("datashare:///com.samples.datasharetest.DataShare");
458let da = new dataSharePredicates.DataSharePredicates();
459da.equalTo("name", "ZhangSan");
460const va = {
461    "name": "roe1",
462    "age": 21,
463    "salary": 20.5,
464
465}
466try {
467    dataShareHelper.update(uri, da, va, (err, data) => {
468        if (err != undefined) {
469            console.error(`update error: code: ${err.code}, message: ${err.message} `);
470            return;
471        }
472        console.log("update succeed, data : " + data);
473    });
474} catch (err) {
475    console.error(`update error: code: ${err.code}, message: ${err.message} `);
476};
477```
478
479### update
480
481update(uri: string, predicates: dataSharePredicates.DataSharePredicates, value: ValuesBucket): Promise&lt;number&gt;
482
483更新数据库中的数据记录。使用Promise异步回调。
484
485**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
486
487**参数:**
488
489| 参数名       | 类型                                                         | 必填 | 说明                                                         |
490| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
491| uri        | string                                                       | 是   | 指示要更新的数据的路径。                                     |
492| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。<br />update接口是否支持谓词筛选条件取决于服务端所选用的数据库,如KVDB目前并不支持谓词筛选条件,仅RDB支持。 |
493| value      | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)    | 是   | 指示要更新的数据。                                           |
494
495**返回值:**
496
497| 类型             | 说明                                                         |
498| ---------------- | ------------------------------------------------------------ |
499| Promise&lt;number&gt; | Promise对象。返回更新的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回更新的数据记录数。 |
500
501**示例:**
502
503```ts
504import UIAbility from '@ohos.app.ability.UIAbility'
505import dataSharePredicates from '@ohos.data.dataSharePredicates'
506
507let uri = ("datashare:///com.samples.datasharetest.DataShare");
508let da = new dataSharePredicates.DataSharePredicates();
509da.equalTo("name", "ZhangSan");
510const va = {
511    "name": "roe1",
512    "age": 21,
513    "salary": 20.5,
514
515}
516try {
517    dataShareHelper.update(uri, da, va).then((data) =>  {
518        console.log("update succeed, data : " + data);
519    }). catch((err) => {
520        console.error(`update error: code: ${err.code}, message: ${err.message} `);
521    });
522} catch (err) {
523    console.error(`update error: code: ${err.code}, message: ${err.message} `);
524};
525```
526
527### batchInsert
528
529batchInsert(uri: string, values: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;): void
530
531将批量数据插入数据库。使用callback异步回调。
532
533**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
534
535**参数:**
536
537| 参数名     | 类型                                                         | 必填 | 说明                                                         |
538| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
539| uri      | string                                                       | 是   | 指示要插入的数据的路径。                                     |
540| values   | Array&lt;[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)&gt; | 是   | 指示要插入的数据。                                           |
541| callback | AsyncCallback&lt;number&gt;                                  | 是   | 回调函数。当将批量数据插入数据库成功,err为undefined,data为获取到的插入的数据记录数;否则为错误对象。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回插入的数据记录数。 |
542
543**示例:**
544
545```ts
546import UIAbility from '@ohos.app.ability.UIAbility'
547let uri = ("datashare:///com.samples.datasharetest.DataShare");
548let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5,},
549                     {"name": "roe12", "age": 21, "salary": 20.5,},
550                     {"name": "roe13", "age": 21, "salary": 20.5,})
551try {
552    dataShareHelper.batchInsert(uri, vbs, (err, data) => {
553        if (err != undefined) {
554            console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `);
555            return;
556        }
557        console.log("batchInsert succeed, data : " + data);
558    });
559} catch (err) {
560    console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `);
561};
562```
563
564### batchInsert
565
566batchInsert(uri: string, values: Array&lt;ValuesBucket&gt;): Promise&lt;number&gt;
567
568将批量数据插入数据库。使用Promise异步回调。
569
570**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
571
572**参数:**
573
574| 参数名   | 类型                                                         | 必填 | 说明                     |
575| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
576| uri    | string                                                       | 是   | 指示要插入的数据的路径。 |
577| values | Array&lt;[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)&gt; | 是   | 指示要插入的数据。       |
578
579**返回值:**
580
581| 类型             | 说明                                                         |
582| ---------------- | ------------------------------------------------------------ |
583| Promise&lt;number&gt; | Promise对象。返回插入的数据记录数。<br />因部分数据库(如KVDB)的相应接口并不提供相应支持,故若服务端使用此数据库,则此Promise也无法返回插入的数据记录数。 |
584
585**示例:**
586
587```ts
588import UIAbility from '@ohos.app.ability.UIAbility'
589let uri = ("datashare:///com.samples.datasharetest.DataShare");
590let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5,},
591                     {"name": "roe12", "age": 21, "salary": 20.5,},
592                     {"name": "roe13", "age": 21, "salary": 20.5,})
593try {
594    dataShareHelper.batchInsert(uri, vbs).then((data) =>  {
595        console.log("batchInsert succeed, data : " + data);
596    }). catch((err) => {
597        console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `);
598    });
599} catch (err) {
600    console.error(`batchInsert error: code: ${err.code}, message: ${err.message} `);
601};
602```
603
604### normalizeUri
605
606normalizeUri(uri: string, callback: AsyncCallback&lt;string&gt;): void
607
608将给定的DataShare URI转换为规范化URI,规范化URI可供跨设备使用,DataShare  URI仅供本地环境中使用。使用callback异步回调。
609
610**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
611
612**参数:**
613
614| 参数名     | 类型                   | 必填 | 说明                                                     |
615| -------- | ---------------------- | ---- | -------------------------------------------------------- |
616| uri      | string                 | 是   | 指示要规范化的[URI](js-apis-uri.md#uri)。      |
617| callback | AsyncCallback&lt;string&gt; | 是   | 回调函数。当将给定的DataShare URI转换为规范化URI成功,err为undefined,data为获取到的规范化URI(如果支持URI规范化,则返回规范化URI,否则返回空);否则为错误对象。 |
618
619**示例:**
620
621```ts
622import UIAbility from '@ohos.app.ability.UIAbility'
623let uri = ("datashare:///com.samples.datasharetest.DataShare");
624dataShareHelper.normalizeUri(uri, (err, data) => {
625    if (err != undefined) {
626        console.log("normalizeUri failed, error message : " + err);
627    }else{
628        console.log("normalizeUri = " + data);
629    }
630});
631```
632
633### normalizeUri
634
635normalizeUri(uri: string): Promise&lt;string&gt;
636
637将给定的DataShare URI转换为规范化URI,规范化URI可供跨设备使用,DataShare  URI仅供本地环境中使用。使用Promise异步回调。
638
639**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
640
641**参数:**
642
643| 参数名 | 类型   | 必填 | 说明                                      |
644| ---- | ------ | ---- | ----------------------------------------- |
645| uri  | string | 是   | 指示要规范化的[URI](js-apis-uri.md#uri)。 |
646
647**返回值:**
648
649| 类型             | 说明                                           |
650| ---------------- | ---------------------------------------------- |
651| Promise&lt;string&gt; | Promise对象。如果支持URI规范化,则返回规范化URI,否则返回空。 |
652
653**示例:**
654
655```ts
656import UIAbility from '@ohos.app.ability.UIAbility'
657let uri = ("datashare:///com.samples.datasharetest.DataShare");
658dataShareHelper.normalizeUri(uri).then((data) => {
659    console.log("normalizeUri = " + data);
660}).catch((err) => {
661    console.log("normalizeUri failed, error message : " + err);
662});
663```
664
665### denormalizeUri
666
667denormalizeUri(uri: string, callback: AsyncCallback&lt;string&gt;): void
668
669将指定的URI转换为非规范化URI。使用callback异步回调。
670
671**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
672
673**参数:**
674
675| 参数名     | 类型                   | 必填 | 说明                                                |
676| -------- | ---------------------- | ---- | --------------------------------------------------- |
677| uri      | string                 | 是   | 指示要反规范化的[URI](js-apis-uri.md#uri)。 |
678| callback | AsyncCallback&lt;string&gt; | 是   | 回调函数。当将指定的URI转换为非规范化URI,err为undefined,data为获取到的反规范化URI(如果反规范化成功,则返回反规范化的URI;如果无需进行反规范化,则返回原始URI;若不支持则返回空);否则为错误对象。 |
679
680**示例:**
681
682```ts
683import UIAbility from '@ohos.app.ability.UIAbility'
684let uri = ("datashare:///com.samples.datasharetest.DataShare");
685dataShareHelper.denormalizeUri(uri, (err, data) => {
686    if (err != undefined) {
687        console.log("denormalizeUri failed, error message : " + err);
688    }else{
689        console.log("denormalizeUri = " + data);
690    }
691});
692```
693
694### denormalizeUri
695
696denormalizeUri(uri: string): Promise&lt;string&gt;
697
698将指定的URI转换为非规范化URI。使用Promise异步回调。
699
700**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
701
702**参数:**
703
704| 参数名 | 类型   | 必填 | 说明                                        |
705| ---- | ------ | ---- | ------------------------------------------- |
706| uri  | string | 是   | 指示要反规范化的[URI](js-apis-uri.md#uri)。 |
707
708**返回值:**
709
710| 类型             | 说明                                      |
711| ---------------- | ----------------------------------------- |
712| Promise&lt;string&gt; | Promise对象。如果反规范化成功,则返回反规范化的URI;如果无需执行任何操作,则返回原始URI;若不支持则返回空。 |
713
714**示例:**
715
716```ts
717import UIAbility from '@ohos.app.ability.UIAbility'
718let uri = ("datashare:///com.samples.datasharetest.DataShare");
719dataShareHelper.denormalizeUri(uri).then((data) => {
720    console.log("denormalizeUri = " + data);
721}).catch((err) => {
722    console.log("denormalizeUri failed, error message : " + err);
723});
724```
725
726### notifyChange
727
728notifyChange(uri: string, callback: AsyncCallback&lt;void&gt;): void
729
730通知已注册的观察者指定URI对应的数据资源已发生变更。使用callback异步回调。
731
732**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
733
734**参数:**
735
736| 参数名    | 类型                 | 必填 | 说明                     |
737| -------- | -------------------- | ---- | ------------------------ |
738| uri      | string               | 是   | 表示指定的数据路径。 |
739| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当通知已注册的观察者指定URI对应的数据资源已发生变更成功,err为undefined;否则为错误对象。 |
740
741**示例:**
742
743```ts
744import UIAbility from '@ohos.app.ability.UIAbility'
745let uri = ("datashare:///com.samples.datasharetest.DataShare");
746dataShareHelper.notifyChange(uri, () => {
747    console.log("***** notifyChange *****");
748});
749```
750
751### notifyChange
752
753notifyChange(uri: string): Promise&lt;void&gt;
754
755通知已注册的观察者指定URI对应的数据资源已发生变更。使用Promise异步回调。
756
757**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
758
759**参数:**
760
761| 参数名 | 类型   | 必填 | 说明                 |
762| ---- | ------ | ---- | -------------------- |
763| uri  | string | 是   | 表示指定的数据路径。 |
764
765**返回值:**
766
767| 类型           | 说明                  |
768| -------------- | --------------------- |
769| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
770
771**示例:**
772
773```ts
774import UIAbility from '@ohos.app.ability.UIAbility'
775let uri = ("datashare:///com.samples.datasharetest.DataShare");
776dataShareHelper.notifyChange(uri);
777```