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<void>): 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<void> | 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<number>): 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<number> | 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<number>): 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<number> | 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<number>): 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<number> | 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<string>, callback: AsyncCallback<Object>): 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<string> | Yes| Columns to query. If this parameter is empty, all columns will be queried.| 210| callback | AsyncCallback<Object> | 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<ValuesBucket>, callback: AsyncCallback<number>): 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<[ValuesBucket](js-apis-data-valuesBucket.md#valuesbucket)> | Yes | Data to insert. | 252| callback | AsyncCallback<number> | 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<string>): 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<string> | 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<string>): 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<string> | 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