harmony 鸿蒙@ohos.application.DataShareExtensionAbility (DataShare ExtensionAbility) (System API)

  • 2025-06-12
  • 浏览 (3)

@ohos.application.DataShareExtensionAbility (DataShare ExtensionAbility) (System API)

The DataShareExtensionAbility module provides data share services based on the ExtensionAbility.

NOTE

  • 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.

  • The APIs provided by this module are system APIs.

  • The APIs of this module can be used only in the stage model.

Modules to Import

import { DataShareExtensionAbility } from '@kit.ArkData';

Properties

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Name Type Readable Writable Description
context10+ ExtensionContext Yes No Context of the DataShare ExtensionAbility.

onCreate

onCreate?(want: Want, callback: AsyncCallback<void>): void

Called by the server to initialize service logic when the DataShare client connects to the DataShareExtensionAbility server. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
want Want Yes Want information, including the ability name and bundle name.
callback AsyncCallback<void> Yes Callback that returns no value.

Example

import { DataShareExtensionAbility, relationalStore } from '@kit.ArkData';
import { Want } from '@kit.AbilityKit';

let DB_NAME = 'DB00.db';
let TBL_NAME = 'TBL00';
let DDL_TBL_CREATE = 'CREATE TABLE IF NOT EXISTS '
  + TBL_NAME
  + ' (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, phoneNumber DOUBLE, isStudent BOOLEAN, Binary BINARY)';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  onCreate(want: Want, callback: Function) {
    relationalStore.getRdbStore(this.context, {
      name: DB_NAME,
      securityLevel: relationalStore.SecurityLevel.S3
    }, (err, data) => {
      console.info(`getRdbStore done, data : ${data}`);
      rdbStore = data;
      rdbStore.executeSql(DDL_TBL_CREATE, [], (err) => {
        console.error(`executeSql done, error message : ${err}`);
      });
      if (callback) {
        callback();
      }
    });
  }
};

UpdateOperation12+

Represents the batch update operation information.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Name Type Mandatory Description
UpdateOperation dataShare.UpdateOperation Yes Data to update.

insert

insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void

Inserts data into the database. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI of the data to insert.
valueBucket ValuesBucket Yes Data to insert.
callback AsyncCallback<number> Yes Callback used to return the index of the data inserted.

Example

import { DataShareExtensionAbility, relationalStore, ValuesBucket } from '@kit.ArkData';

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  insert(uri: string, valueBucket: ValuesBucket, callback: Function) {
    if (valueBucket === null) {
      console.error('invalid valueBuckets');
      return;
    }
    rdbStore.insert(TBL_NAME, valueBucket, (err, ret) => {
      console.info(`callback ret: ${ret}`);
      if (callback !== undefined) {
        callback(err, ret);
      }
    });
  }
};

update

update?(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void

Updates data in the database. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI of the data to update.
predicates dataSharePredicates.DataSharePredicates Yes Filter criteria for updating data.
valueBucket ValuesBucket Yes New data.
callback AsyncCallback<number> Yes Callback used to return the number of updated data records.

Example

import { DataShareExtensionAbility, relationalStore, dataSharePredicates, ValuesBucket } from '@kit.ArkData';

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  update(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: Function) {
    if (predicates === null||predicates === undefined) {
      return;
    }
    rdbStore.update(TBL_NAME, valueBucket, predicates, (err, ret) => {
      if (callback !== undefined) {
        callback(err, ret);
      }
    });
  }
};

batchUpdate12+

batchUpdate?( operations: Record<string, Array<UpdateOperation>> , callback: AsyncCallback<Record<string, Array<number>>>): void

Batch updates data into the database. This API is called by the server and can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
operations Record<string, Array<UpdateOperation>> Yes Collection of the path of the data to update, update conditions, and new data.
callback AsyncCallback<Record<string, Array<number>>> Yes Callback used to return an array of updated data records. The value -1 means the update operation fails.

Example

import { DataShareExtensionAbility, relationalStore, dataShare } from '@kit.ArkData';
import { BusinessError } from '@kit.BasicServicesKit'

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  batchUpdate(operations:Record<string, Array<dataShare.UpdateOperation>>, callback:Function) {
    let recordOps : Record<string, Array<dataShare.UpdateOperation>> = operations;
    let results : Record<string, Array<number>> = {};
    let a = Object.entries(recordOps);
    for (let i = 0; i < a.length; i++) {
      let key = a[i][0];
      let values = a[i][1];
      let result : number[] = [];
      for (const value of values) {
        rdbStore.update(TBL_NAME, value.values, value.predicates).then(async (rows) => {
          console.info('Update row count is ' + rows);
          result.push(rows);
        }).catch((err:BusinessError) => {
          console.info('Update failed, err is ' + JSON.stringify(err));
          result.push(-1)
        })
      }
      results[key] = result;
    }
    callback(null, results);
  }
};

delete

delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;): void

Deletes data from the database. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI of the data to delete.
predicates dataSharePredicates.DataSharePredicates Yes Filter criteria for deleting data.
callback AsyncCallback&lt;number&gt; Yes Callback used to return the number of data records deleted.

Example

import { DataShareExtensionAbility, relationalStore, dataSharePredicates } from '@kit.ArkData';

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: Function) {
    if (predicates === null||predicates === undefined) {
      return;
    }
    rdbStore.delete(TBL_NAME, predicates, (err, ret) => {
      if (callback !== undefined) {
        callback(err, ret);
      }
    });
  }
};

query

query?(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;Object&gt;): void

Queries data from the database. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI of the data to query.
predicates dataSharePredicates.DataSharePredicates Yes Filter criteria for querying data.
columns Array&lt;string&gt; Yes Columns to query. If this parameter is empty, all columns will be queried.
callback AsyncCallback&lt;Object&gt; Yes Callback used to return the result set obtained.

Example

import { DataShareExtensionAbility, relationalStore, dataSharePredicates } from '@kit.ArkData';

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: Function) {
    if (predicates === null||predicates === undefined) {
      return;
    }
    rdbStore.query(TBL_NAME, predicates, columns, (err, resultSet) => {
      if (resultSet !== undefined) {
        console.info(`resultSet.rowCount: ${resultSet.rowCount}`);
      }
      if (callback !== undefined) {
        callback(err, resultSet);
      }
    });
  }
};

batchInsert

batchInsert?(uri: string, valueBuckets: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;): void

Batch inserts data into the database. This API is called by the server and can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI of the data to insert.
valueBuckets Array&lt;ValuesBucket&gt; Yes Data to insert.
callback AsyncCallback&lt;number&gt; Yes Callback used to return the number of inserted data records.

Example

import { DataShareExtensionAbility, relationalStore, ValuesBucket } from '@kit.ArkData';

let TBL_NAME = 'TBL00';
let rdbStore: relationalStore.RdbStore;

export default class DataShareExtAbility extends DataShareExtensionAbility {
  batchInsert(uri: string, valueBuckets: Array<ValuesBucket>, callback: Function) {
    if (valueBuckets === null||valueBuckets.length === undefined) {
      console.error('invalid valueBuckets');
      return;
    }
    rdbStore.batchInsert(TBL_NAME, valueBuckets, (err, ret) => {
      if (callback !== undefined) {
        callback(err, ret);
      }
    });
  };
};

normalizeUri

normalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void

Normalizes a URI. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI to normalize.
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.

Example

import { DataShareExtensionAbility } from '@kit.ArkData';
import { BusinessError } from '@kit.BasicServicesKit'

export default class DataShareExtAbility extends DataShareExtensionAbility {
  normalizeUri(uri: string, callback: Function) {
    let key = 'code';
    let value = 0;
    let err: BusinessError = {
      code: value,
      name: key,
      message: key
    };
    let ret: string = `normalize: ${uri}`;
    callback(err, ret);
  }
};

denormalizeUri

denormalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void

Denormalizes a URI. This API can be overridden as required.

System capability: SystemCapability.DistributedDataManager.DataShare.Provider

Parameters

Name Type Mandatory Description
uri string Yes URI to denormalize.
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.

Example

import { DataShareExtensionAbility } from '@kit.ArkData';
import { BusinessError } from '@kit.BasicServicesKit'

export default class DataShareExtAbility extends DataShareExtensionAbility {
  denormalizeUri(uri: string, callback: Function) {
    let key = 'code';
    let value = 0;
    let err: BusinessError = {
      code: value,
      name: key,
      message: key
    };
      let ret = `denormalize ${uri}`;
      callback(err, ret);
  }
};

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkData (ArkData Management)

harmony 鸿蒙Data

harmony 鸿蒙OH_Cursor

harmony 鸿蒙OH_Predicates

harmony 鸿蒙OH_Rdb_Config

harmony 鸿蒙OH_Rdb_Store

harmony 鸿蒙OH_VBucket

harmony 鸿蒙OH_VObject

harmony 鸿蒙Preferences

harmony 鸿蒙_r_d_b

0  赞