• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.application.DataShareExtensionAbility (数据共享扩展能力)
2
3**DataShareExtensionAbility**基于ExtensionAbility框架,提供支持数据共享业务的能力。
4
5>**说明:**
6>
7> 本模块首批接口从API version 9开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块接口为系统接口。
10>
11> 本模块接口仅可在Stage模型下使用。
12
13
14## 导入模块
15
16```ts
17import DataShareExtensionAbility from '@ohos.application.DataShareExtensionAbility';
18```
19
20## 属性
21
22**系统能力**:SystemCapability.DistributedDataManager.DataShare.Provider
23
24| 名称 | 类型 | 可读 | 可写 | 说明 |
25| -------- | -------- | -------- | -------- | -------- |
26| context<sup>10+</sup> | [ExtensionContext](js-apis-inner-application-extensionContext.md)  | 是 | 否 |表示数据共享扩展能力上下文。|
27
28## onCreate
29
30onCreate?(want: Want, callback: AsyncCallback&lt;void&gt;): void
31
32DataShare客户端连接DataShareExtensionAbility服务端时,服务端回调此接口,执行初始化业务逻辑操作。该方法可以选择性重写。
33
34**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
35
36**参数:**
37
38| 参数名 | 类型 | 必填 | 说明 |
39| ----- | ------ | ------ | ------ |
40| want | [Want](js-apis-app-ability-want.md#want) | 是  | Want类型信息,包括Ability名称、Bundle名称等。 |
41| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。无返回值。 |
42
43**示例:**
44
45```ts
46import relationalStore from '@ohos.data.relationalStore'
47import Want from '@ohos.app.ability.Want'
48
49let DB_NAME = 'DB00.db';
50let TBL_NAME = 'TBL00';
51let DDL_TBL_CREATE = 'CREATE TABLE IF NOT EXISTS '
52  + TBL_NAME
53  + ' (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, phoneNumber DOUBLE, isStudent BOOLEAN, Binary BINARY)';
54let rdbStore: relationalStore.RdbStore;
55
56export default class DataShareExtAbility extends DataShareExtensionAbility {
57  onCreate(want: Want, callback: Function) {
58    relationalStore.getRdbStore(this.context, {
59      name: DB_NAME,
60      securityLevel: relationalStore.SecurityLevel.S1
61    }, (err, data) => {
62      console.info(`getRdbStore done, data : ${data}`);
63      rdbStore = data;
64      rdbStore.executeSql(DDL_TBL_CREATE, [], (err) => {
65        console.error(`executeSql done, error message : ${err}`);
66      });
67      if (callback) {
68        callback();
69      }
70    });
71  }
72};
73```
74
75## insert
76
77insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
78
79在数据库插入时回调此接口,该方法可以选择性重写。
80
81**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
82
83**参数:**
84
85| 参数名 | 类型 | 必填 | 说明 |
86| ----- | ------ | ------ | ------ |
87| uri |string | 是  | 指示要插入的数据的路径。 |
88| valueBucket |[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 指示要插入的数据。 |
89| callback |AsyncCallback&lt;number&gt; | 是 | 回调函数。返回插入数据记录的索引。 |
90
91**示例:**
92
93```ts
94import relationalStore from '@ohos.data.relationalStore'
95import { ValuesBucket } from '@ohos.data.ValuesBucket'
96
97let TBL_NAME = 'TBL00';
98let rdbStore: relationalStore.RdbStore;
99
100export default class DataShareExtAbility extends DataShareExtensionAbility {
101  insert(uri: string, valueBucket: ValuesBucket, callback: Function) {
102    if (valueBucket === null) {
103      console.error('invalid valueBuckets');
104      return;
105    }
106    rdbStore.insert(TBL_NAME, valueBucket, (err, ret) => {
107      console.info(`callback ret: ${ret}`);
108      if (callback !== undefined) {
109        callback(err, ret);
110      }
111    });
112  }
113};
114```
115
116## update
117
118update?(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
119
120在数据库更新时服务端回调此接口,该方法可以选择性重写。
121
122**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
123
124**参数:**
125
126| 参数名 | 类型 | 必填 | 说明 |
127| ----- | ------ | ------ | ------ |
128| uri | string | 是  | 指示要更新的数据的路径。 |
129| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是  | 指示筛选条件。 |
130| valueBucket | [ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket) | 是 | 指示要更新的数据。 |
131| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回更新的数据记录数。 |
132
133**示例:**
134
135```ts
136import relationalStore from '@ohos.data.relationalStore';
137import dataSharePredicates from '@ohos.data.dataSharePredicates';
138import { ValuesBucket } from '@ohos.data.ValuesBucket'
139
140let TBL_NAME = 'TBL00';
141let rdbStore: relationalStore.RdbStore;
142
143export default class DataShareExtAbility extends DataShareExtensionAbility {
144  update(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: Function) {
145    if (predicates === null || predicates === undefined) {
146      return;
147    }
148    rdbStore.update(TBL_NAME, valueBucket, predicates, (err, ret) => {
149      if (callback !== undefined) {
150        callback(err, ret);
151      }
152    });
153  }
154};
155```
156
157## delete
158
159delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;): void
160
161在删除数据库记录时服务端回调此接口,该方法可以选择性重写。
162
163**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
164
165**参数:**
166
167| 参数名       | 类型                                                     | 必填 | 说明                               |
168| ---------- | ------------------------------------------------------------ | ---- | ---------------------------------- |
169| uri        | string                                                       | 是   | 指示要删除的数据的路径。           |
170| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。                     |
171| callback   | AsyncCallback&lt;number&gt;                                  | 是   | 回调函数。返回已删除的数据记录数。 |
172
173**示例:**
174
175```ts
176import relationalStore from '@ohos.data.relationalStore';
177import dataSharePredicates from '@ohos.data.dataSharePredicates';
178
179let TBL_NAME = 'TBL00';
180let rdbStore: relationalStore.RdbStore;
181
182export default class DataShareExtAbility extends DataShareExtensionAbility {
183  delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: Function) {
184    if (predicates === null || predicates === undefined) {
185      return;
186    }
187    rdbStore.delete(TBL_NAME, predicates, (err, ret) => {
188      if (callback !== undefined) {
189        callback(err, ret);
190      }
191    });
192  }
193};
194```
195
196## query
197
198query?(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;Object&gt;): void
199
200在查询数据库时服务端回调此接口,该方法可以选择性重写。
201
202**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
203
204**参数:**
205
206| 参数名 | 类型 | 必填 | 说明 |
207| ----- | ------ | ------ | ------ |
208| uri | string | 是  | 指示要查询的数据的路径。 |
209| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是  | 指示筛选条件。 |
210| columns | Array&lt;string&gt; | 是 | 指示要查询的列。如果此参数为空,则查询所有列。 |
211| callback | AsyncCallback&lt;Object&gt; | 是 | 回调函数。返回查询到的结果集。 |
212
213**示例:**
214
215```ts
216import relationalStore from '@ohos.data.relationalStore';
217import dataSharePredicates from '@ohos.data.dataSharePredicates';
218
219let TBL_NAME = 'TBL00';
220let rdbStore: relationalStore.RdbStore;
221
222export default class DataShareExtAbility extends DataShareExtensionAbility {
223  query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: Function) {
224    if (predicates === null || predicates === undefined) {
225      return;
226    }
227    rdbStore.query(TBL_NAME, predicates, columns, (err, resultSet) => {
228      if (resultSet !== undefined) {
229        console.info(`resultSet.rowCount: ${resultSet.rowCount}`);
230      }
231      if (callback !== undefined) {
232        callback(err, resultSet);
233      }
234    });
235  }
236};
237```
238
239## batchInsert
240
241batchInsert?(uri: string, valueBuckets: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;): void
242
243在数据库批量插入时服务端回调此接口,该方法可以选择性重写。
244
245**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
246
247**参数:**
248
249| 参数名        | 类型                                                     | 必填 | 说明                             |
250| ------------ | ------------------------------------------------------------ | ---- | -------------------------------- |
251| uri          | string                                                       | 是   | 指示要批量插入的数据的路径。     |
252| valueBuckets | Array&lt;[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)&gt; | 是   | 指示要批量插入的数据。           |
253| callback     | AsyncCallback&lt;number&gt;                                  | 是   | 回调函数。返回插入的数据记录数。 |
254
255**示例:**
256
257```ts
258import relationalStore from '@ohos.data.relationalStore';
259import { ValuesBucket } from '@ohos.data.ValuesBucket'
260
261let TBL_NAME = 'TBL00';
262let rdbStore: relationalStore.RdbStore;
263
264export default class DataShareExtAbility extends DataShareExtensionAbility {
265  batchInsert(uri: string, valueBuckets: Array<ValuesBucket>, callback: Function) {
266    if (valueBuckets === null || valueBuckets.length === undefined) {
267      console.error('invalid valueBuckets');
268      return;
269    }
270    rdbStore.batchInsert(TBL_NAME, valueBuckets, (err, ret) => {
271      if (callback !== undefined) {
272        callback(err, ret);
273      }
274    });
275  };
276};
277```
278
279## normalizeUri
280
281normalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
282
283用户给定的URI转换为服务端使用的URI时回调此接口,该方法可以选择性重写。
284
285**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
286
287**参数:**
288
289| 参数名     | 类型                  | 必填 | 说明                    |
290| -------- | --------------------- | ---- | ----------------------- |
291| uri      | string                | 是   | 指示用户传入的[URI](js-apis-uri.md#uri)。 |
292| callback | AsyncCallback&lt;string&gt; | 是   | 回调函数。如果支持URI规范化,则返回规范化URI,否则返回空。 |
293
294**示例:**
295
296```ts
297import { BusinessError } from '@ohos.base'
298
299export default class DataShareExtAbility extends DataShareExtensionAbility {
300  normalizeUri(uri: string, callback: Function) {
301    let key = 'code';
302    let value = 0;
303    let err: BusinessError = {
304      code: value,
305      name: key,
306      message: key
307    };
308    let ret: string = `normalize: ${uri}`;
309    callback(err, ret);
310  }
311};
312```
313
314## denormalizeUri
315
316denormalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
317
318服务端使用的URI转换为用户传入的初始URI时服务端回调此接口,该方法可以选择性重写。
319
320**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider
321
322**参数:**
323
324| 参数名     | 类型                  | 必填 | 说明                    |
325| -------- | --------------------- | ---- | ----------------------- |
326| uri      | string                | 是   | 指示服务端使用的[URI](js-apis-uri.md#uri)。 |
327| callback | AsyncCallback&lt;string&gt; | 是   | 回调函数。如果反规范化成功,则返回反规范化的URI;如果无需进行反规范化,则返回原始URI;若不支持则返回空。 |
328
329**示例:**
330
331```ts
332import { BusinessError } from '@ohos.base'
333
334export default class DataShareExtAbility extends DataShareExtensionAbility {
335  denormalizeUri(uri: string, callback: Function) {
336    let key = 'code';
337    let value = 0;
338    let err: BusinessError = {
339      code: value,
340      name: key,
341      message: key
342    };
343      let ret = `denormalize ${uri}`;
344      callback(err, ret);
345  }
346};
347```
348