• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.application.DataShareExtensionAbility (DataShare ExtensionAbility)
2
3The **DataShareExtensionAbility** module provides data share services based on the ExtensionAbility.
4
5>**NOTE**
6>
7> - The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8>
9> - The APIs provided by this module are system APIs and can be used only in the stage model.
10>
11
12
13## Modules to Import
14
15```ts
16import DataShareExtensionAbility from '@ohos.application.DataShareExtensionAbility';
17```
18
19## Attributes
20
21**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
22
23| Name| Type| Readable| Writable| Description|
24| -------- | -------- | -------- | -------- | -------- |
25| context<sup>10+</sup> | [ExtensionContext](js-apis-inner-application-extensionContext.md)  | Yes| No|Context of the DataShare ExtensionAbility.|
26
27## onCreate
28
29onCreate?(want: Want, callback: AsyncCallback&lt;void&gt;): void
30
31Called by the server to initialize service logic when the DataShare client connects to the DataShareExtensionAbility server. This API can be overridden as required.
32
33**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
34
35**Parameters**
36
37| Name| Type| Mandatory| Description|
38| ----- | ------ | ------ | ------ |
39| want | [Want](js-apis-app-ability-want.md#want) | Yes | Want information, including the ability name and bundle name.|
40| callback | AsyncCallback&lt;void&gt; | Yes| Callback that returns no value.|
41
42**Example**
43
44```ts
45import relationalStore from '@ohos.data.relationalStore'
46import Want from '@ohos.app.ability.Want'
47
48let DB_NAME = 'DB00.db';
49let TBL_NAME = 'TBL00';
50let DDL_TBL_CREATE = 'CREATE TABLE IF NOT EXISTS '
51  + TBL_NAME
52  + ' (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, phoneNumber DOUBLE, isStudent BOOLEAN, Binary BINARY)';
53let rdbStore: relationalStore.RdbStore;
54
55export default class DataShareExtAbility extends DataShareExtensionAbility {
56  onCreate(want: Want, callback: Function) {
57    relationalStore.getRdbStore(this.context, {
58      name: DB_NAME,
59      securityLevel: relationalStore.SecurityLevel.S1
60    }, (err, data) => {
61      console.info(`getRdbStore done, data : ${data}`);
62      rdbStore = data;
63      rdbStore.executeSql(DDL_TBL_CREATE, [], (err) => {
64        console.error(`executeSql done, error message : ${err}`);
65      });
66      if (callback) {
67        callback();
68      }
69    });
70  }
71};
72```
73
74## insert
75
76insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
77
78Inserts data into the database. This API can be overridden as required.
79
80**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
81
82**Parameters**
83
84| Name| Type| Mandatory| Description|
85| ----- | ------ | ------ | ------ |
86| uri |string | Yes | URI of the data to insert.|
87| valueBucket |[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | Yes| Data to insert.|
88| callback |AsyncCallback&lt;number&gt; | Yes| Callback invoked to return the index of the data inserted.|
89
90**Example**
91
92```ts
93import relationalStore from '@ohos.data.relationalStore'
94import { ValuesBucket } from '@ohos.data.ValuesBucket'
95
96let TBL_NAME = 'TBL00';
97let rdbStore: relationalStore.RdbStore;
98
99export default class DataShareExtAbility extends DataShareExtensionAbility {
100  insert(uri: string, valueBucket: ValuesBucket, callback: Function) {
101    if (valueBucket === null) {
102      console.error('invalid valueBuckets');
103      return;
104    }
105    rdbStore.insert(TBL_NAME, valueBucket, (err, ret) => {
106      console.info(`callback ret: ${ret}`);
107      if (callback !== undefined) {
108        callback(err, ret);
109      }
110    });
111  }
112};
113```
114
115## update
116
117update?(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
118
119Updates data in the database. This API can be overridden as required.
120
121**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
122
123**Parameters**
124
125| Name| Type| Mandatory| Description|
126| ----- | ------ | ------ | ------ |
127| uri | string | Yes | URI of the data to update.|
128| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | Yes | Filter criteria for updating data.|
129| valueBucket | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | Yes| New data.|
130| callback | AsyncCallback&lt;number&gt; | Yes| Callback invoked to return the number of updated data records.|
131
132**Example**
133
134```ts
135import relationalStore from '@ohos.data.relationalStore';
136import dataSharePredicates from '@ohos.data.dataSharePredicates';
137import { ValuesBucket } from '@ohos.data.ValuesBucket'
138
139let TBL_NAME = 'TBL00';
140let rdbStore: relationalStore.RdbStore;
141
142export default class DataShareExtAbility extends DataShareExtensionAbility {
143  update(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: Function) {
144    if (predicates === null || predicates === undefined) {
145      return;
146    }
147    rdbStore.update(TBL_NAME, valueBucket, predicates, (err, ret) => {
148      if (callback !== undefined) {
149        callback(err, ret);
150      }
151    });
152  }
153};
154```
155
156## delete
157
158delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;): void
159
160Deletes data from the database. This API can be overridden as required.
161
162**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
163
164**Parameters**
165
166| Name      | Type                                                    | Mandatory| Description                              |
167| ---------- | ------------------------------------------------------------ | ---- | ---------------------------------- |
168| uri        | string                                                       | Yes  | URI of the data to delete.          |
169| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | Yes  | Filter criteria for deleting data.                    |
170| callback   | AsyncCallback&lt;number&gt;                                  | Yes  | Callback invoked to return the number of data records deleted.|
171
172**Example**
173
174```ts
175import relationalStore from '@ohos.data.relationalStore';
176import dataSharePredicates from '@ohos.data.dataSharePredicates';
177
178let TBL_NAME = 'TBL00';
179let rdbStore: relationalStore.RdbStore;
180
181export default class DataShareExtAbility extends DataShareExtensionAbility {
182  delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: Function) {
183    if (predicates === null || predicates === undefined) {
184      return;
185    }
186    rdbStore.delete(TBL_NAME, predicates, (err, ret) => {
187      if (callback !== undefined) {
188        callback(err, ret);
189      }
190    });
191  }
192};
193```
194
195## query
196
197query?(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;Object&gt;): void
198
199Queries data from the database. This API can be overridden as required.
200
201**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
202
203**Parameters**
204
205| Name| Type| Mandatory| Description|
206| ----- | ------ | ------ | ------ |
207| uri | string | Yes | URI of the data to query.|
208| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | Yes | Filter criteria for querying data.|
209| columns | Array&lt;string&gt; | Yes| Columns to query. If this parameter is empty, all columns will be queried.|
210| callback | AsyncCallback&lt;Object&gt; | Yes| Callback invoked to return the result set obtained.|
211
212**Example**
213
214```ts
215import relationalStore from '@ohos.data.relationalStore';
216import dataSharePredicates from '@ohos.data.dataSharePredicates';
217
218let TBL_NAME = 'TBL00';
219let rdbStore: relationalStore.RdbStore;
220
221export default class DataShareExtAbility extends DataShareExtensionAbility {
222  query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: Function) {
223    if (predicates === null || predicates === undefined) {
224      return;
225    }
226    rdbStore.query(TBL_NAME, predicates, columns, (err, resultSet) => {
227      if (resultSet !== undefined) {
228        console.info(`resultSet.rowCount: ${resultSet.rowCount}`);
229      }
230      if (callback !== undefined) {
231        callback(err, resultSet);
232      }
233    });
234  }
235};
236```
237
238## batchInsert
239
240batchInsert?(uri: string, valueBuckets: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;): void
241
242Batch inserts data into the database. This API is called by the server and can be overridden as required.
243
244**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
245
246**Parameters**
247
248| Name       | Type                                                    | Mandatory| Description                            |
249| ------------ | ------------------------------------------------------------ | ---- | -------------------------------- |
250| uri          | string                                                       | Yes  | URI of the data to insert.    |
251| valueBuckets | Array&lt;[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)&gt; | Yes  | Data to insert.          |
252| callback     | AsyncCallback&lt;number&gt;                                  | Yes  | Callback invoked to return the number of inserted data records.|
253
254**Example**
255
256```ts
257import relationalStore from '@ohos.data.relationalStore';
258import { ValuesBucket } from '@ohos.data.ValuesBucket'
259
260let TBL_NAME = 'TBL00';
261let rdbStore: relationalStore.RdbStore;
262
263export default class DataShareExtAbility extends DataShareExtensionAbility {
264  batchInsert(uri: string, valueBuckets: Array<ValuesBucket>, callback: Function) {
265    if (valueBuckets === null || valueBuckets.length === undefined) {
266      console.error('invalid valueBuckets');
267      return;
268    }
269    rdbStore.batchInsert(TBL_NAME, valueBuckets, (err, ret) => {
270      if (callback !== undefined) {
271        callback(err, ret);
272      }
273    });
274  };
275};
276```
277
278## normalizeUri
279
280normalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
281
282Normalizes a URI. This API can be overridden as required.
283
284**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
285
286**Parameters**
287
288| Name    | Type                 | Mandatory| Description                   |
289| -------- | --------------------- | ---- | ----------------------- |
290| uri      | string                | Yes  | [URI](js-apis-uri.md#uri) to normalize.|
291| callback | AsyncCallback&lt;string&gt; | Yes  | Callback used to return the result. If the operation is successful, the normalized URI is returned. Otherwise, **null** is returned.|
292
293**Example**
294
295```ts
296import { BusinessError } from '@ohos.base'
297
298export default class DataShareExtAbility extends DataShareExtensionAbility {
299  normalizeUri(uri: string, callback: Function) {
300    let key = 'code';
301    let value = 0;
302    let err: BusinessError = {
303      code: value,
304      name: key,
305      message: key
306    };
307    let ret: string = `normalize: ${uri}`;
308    callback(err, ret);
309  }
310};
311```
312
313## denormalizeUri
314
315denormalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
316
317Denormalizes a URI. This API can be overridden as required.
318
319**System capability**: SystemCapability.DistributedDataManager.DataShare.Provider
320
321**Parameters**
322
323| Name    | Type                 | Mandatory| Description                   |
324| -------- | --------------------- | ---- | ----------------------- |
325| uri      | string                | Yes  | [URI](js-apis-uri.md#uri) to denormalize.|
326| callback | AsyncCallback&lt;string&gt; | Yes  | Callback used to return the result. If the operation is successful, the denormalized URI is returned. If the URI passed in is returned, denormalization is not required. If denormalization is not supported, **null** is returned.|
327
328**Example**
329
330```ts
331import { BusinessError } from '@ohos.base'
332
333export default class DataShareExtAbility extends DataShareExtensionAbility {
334  denormalizeUri(uri: string, callback: Function) {
335    let key = 'code';
336    let value = 0;
337    let err: BusinessError = {
338      code: value,
339      name: key,
340      message: key
341    };
342      let ret = `denormalize ${uri}`;
343      callback(err, ret);
344  }
345};
346```
347