未验证 提交 9503c250 编写于 作者: O openharmony_ci 提交者: Gitee

!4449 【DataShare】datashareJSAPI接口说明文档新增

Merge pull request !4449 from songruirui/master
# 数据共享扩展能力
**DataShareExtensionAbility**基于ExtensionAbility框架,提供支持数据共享业务的能力。
>**说明:**
>
>本模块首批接口从API version 9开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
>本模块接口为系统接口。
>
>本模块接口仅可在Stage模型下使用。
## 导入模块
```ts
import DataShareExtensionAbility from '@ohos.application.DataShareExtensionAbility'
```
## onCreate
onCreate?(want: Want, callback: AsyncCallback<void>): void
DataShare客户端连接DataShareExtensionAbility服务端时,服务端回调此接口,执行初始化业务逻辑操作。该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| want | [Want](js-apis-application-Want.md#want) | 是 | Want类型信息,包括ability名称、bundle名称等。 |
| callback | AsyncCallback<void> | 是 | 回调函数。无返回值。 |
**示例:**
```ts
import rdb from '@ohos.data.rdb';
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;
onCreate(want: Want, callback: AsyncCallback<void>) {
rdb.getRdbStore(this.context, {
name: DB_NAME
}, 1, function (err, data) {
console.log('getRdbStore done, data : ' + data);
rdbStore = data;
rdbStore.executeSql(DDL_TBL_CREATE, [], function (err) {
console.log('executeSql done, error message : ' + err);
});
if (callback) {
callback();
}
});
}
```
## getFileTypes
getFileTypes?(uri: string, mimeTypeFilter: string, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
获取支持文件的MIME类型时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 类型 | 必填 | 描述 |
| -------------- | ---------------------------------------- | ---- | ---------------------------------- |
| uri | string | 是 | 指示要获取的文件的路径。 |
| mimeTypeFilter | string | 是 | 指示要获取的文件的MIME类型。 |
| callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是 | 回调函数。返回匹配的MIME类型数组。 |
**示例:**
```ts
getFileTypes(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>) {
let err = {"code":0};
let ret = new Array("type01", "type02", "type03");
callback(err, ret);
}
```
## openFile
openFile?(uri: string, mode: string, callback: AsyncCallback&lt;number&gt;): void
在打开文件时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 类型 | 必填 | 描述 |
| -------- | --------------------- | ---- | ------------------------------------------ |
| uri | string | 是 | 指示要打开的文件的路径。 |
| mode | string | 是 | 指示文件打开模式,包括只读模式,读写模式。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回文件描述符。 |
**示例:**
```ts
openFile(uri: string, mode: string, callback: AsyncCallback<number>) {
let err = {"code":0};
let fd = 0;
callback(err,fd);
}
```
## insert
insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
在数据库插入时回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri |string | 是 | 指示要插入的数据的路径。 |
| valueBucket |[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是 | 指示要插入的数据。 |
| callback |AsyncCallback&lt;number&gt; | 是 | 回调函数。返回插入数据记录的索引。 |
**示例:**
```ts
insert(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback<number>) {
if (value == null) {
console.info('invalid valueBuckets');
return;
}
rdbStore.insert(TBL_NAME, value, function (err, ret) {
console.info('callback ret:' + ret);
if (callback != undefined) {
callback(err, ret);
}
});
}
```
## update
update?(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback&lt;number&gt;): void
在数据库更新时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri | string | 是 | 指示要更新的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件。 |
| valueBucket | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是 | 指示要更新的数据。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回更新的数据记录数。 |
**示例:**
```ts
update(uri: string, predicates: dataSharePredicates.DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback<number>) {
if (predicates == null || predicates == undefined) {
return;
}
rdbStore.update(TBL_NAME, value, predicates, function (err, ret) {
if (callback != undefined) {
callback(err, ret);
}
});
}
```
## delete
delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;number&gt;): void
在删除数据库记录时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 参数类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ---------------------------------- |
| uri | string | 是 | 指示要删除的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回已删除的数据记录数。 |
**示例:**
```ts
delete(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>) {
if (predicates == null || predicates == undefined) {
return;
}
rdbStore.delete(TBL_NAME, predicates, function (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
在查询数据库时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri | string | 是 | 指示要查询的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是 | 指示筛选条件。 |
| columns | Array&lt;string&gt; | 是 | 指示要查询的列。如果此参数为空,则查询所有列。 |
| callback | AsyncCallback&lt;Object&gt; | 是 | 回调函数。返回查询到的结果集。 |
**示例:**
```ts
query(uri: string, predicates: dataSharePredicates.DataSharePredicates, columns: Array<string>, callback: AsyncCallback<Object>) {
if (predicates == null || predicates == undefined) {
return;
}
rdbStore.query(TBL_NAME, predicates, columns, function (err, resultSet) {
if (resultSet != undefined) {
console.info('resultSet.rowCount: ' + resultSet.rowCount);
}
if (callback != undefined) {
callback(err, resultSet);
}
});
}
```
## getType
getType?(uri: string, callback: AsyncCallback&lt;string&gt;): void
获取给定URI对应的MIME类型时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri | string | 是 | 指示要获取MIME类型的数据的路径。 |
| callback | AsyncCallback&lt;string&gt; | 是 | 回调函数。返回与URI指定的数据匹配的MIME类型。 |
**示例:**
```ts
getType(uri: string, callback: AsyncCallback<string>) {
let err = {"code":0};
let ret = "image";
callback(err, ret);
}
```
## BatchInsert
BatchInsert?(uri: string, valueBuckets: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;number&gt;): void
在数据库批量插入时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 参数类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------------ | ---- | -------------------------------- |
| uri | string | 是 | 指示要批量插入的数据的路径。 |
| valueBuckets | Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是 | 指示要批量插入的数据。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回插入的数据记录数。 |
**示例:**
```ts
batchInsert(uri: string, valueBuckets: Array<ValuesBucket>, callback: AsyncCallback<number>) {
if (valueBuckets == null || valueBuckets.length == undefined) {
console.info('invalid valueBuckets');
return;
}
let resultNum = valueBuckets.length
valueBuckets.forEach(vb => {
rdbStore.insert(TBL_NAME, vb, function (err, ret) {
if (callback != undefined) {
callback(err, resultNum);
}
});
});
}
```
## normalizeUri
normalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
用户给定的URI转换为服务端使用的URI时回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 类型 | 必填 | 描述 |
| -------- | --------------------- | ---- | ----------------------- |
| uri | string | 是 | 指示用户传入的[URI](js-apis-uri.md#uri)。 |
| callback | AsyncCallback&lt;string&gt; | 是 | 回调函数。如果支持URI规范化,则返回规范化URI,否则返回空。 |
**示例:**
```ts
normalizeUri(uri: string, callback: AsyncCallback<string>) {
let err = {"code":0};
let ret = "normalize+" + uri;
callback(err, ret);
}
```
## denormalizeUri
denormalizeUri?(uri: string, callback: AsyncCallback&lt;string&gt;): void
服务端使用的URI转换为用户传入的初始URI时服务端回调此接口,该方法可以选择性重写。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Provider
**参数:**
| 名称 | 类型 | 必填 | 描述 |
| -------- | --------------------- | ---- | ----------------------- |
| uri | string | 是 | 指示服务端使用的[URI](js-apis-uri.md#uri)。 |
| callback | AsyncCallback&lt;string&gt; | 是 | 回调函数。如果反规范化成功,则返回反规范化的URI;如果无需进行反规范化,则返回原始URI;若不支持则返回空。 |
**示例:**
```ts
denormalizeUri(uri: string, callback: AsyncCallback<string>) {
let err = {"code":0};
let ret = "denormalize+" + uri;
callback(err, ret);
}
```
# 数据共享结果集
**结果集(DataShareResultSet)** 可提供访问由查询数据库生成的结果集的相关方法,根据提供的行数,查询相应的值,也可查询指定数据类型的值。
>**说明:**
>
>本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```ts
import DataShareResultSet from '@ohos.data.DataShareResultSet';
```
## 使用说明
需要通过调用[query](js-apis-data-dataShare.md#query)接口获取DataShareResultSet对象。
```ts
import dataShare from '@ohos.data.dataShare';
import dataSharePredicates from '@ohos.data.dataSharePredicates'
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
await dataShare.createDataShareHelper(this.context, uri, (err, data) => {
if (err != undefined) {
console.info("createDataShareHelper fail, error message : " + err);
} else {
console.info("createDataShareHelper end, data : " + data);
dataShareHelper = data;
}
});
let columns = ["*"];
let da = new dataSharePredicates.DataSharePredicates();
let resultSet;
da.equalTo("name", "ZhangSan");
dataShareHelper.query(uri, da, columns).then((data) => {
console.log("query end, data : " + data);
resultSet = data;
}).catch((err) => {
console.log("query fail, error message : " + err);
});
```
## 属性
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
| 名称 | 参数类型 | 必填 | 说明 |
| ----------- | ------------- | ---- | ------------------------ |
| columnNames | Array&lt;string&gt; | 是 | 结果集中所有列的名称。 |
| columnCount | number | 是 | 结果集中的列数。 |
| rowCount | number | 是 | 结果集中的行数。 |
| isClosed | boolean | 是 | 标识当前结果集是否关闭。 |
## goToFirstRow
goToFirstRow(): boolean
转到结果集的第一行。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**返回值:**
| 类型 | 说明 |
| :------ | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let isGoTOFirstRow = resultSet.goToFirstRow();
console.info('resultSet.goToFirstRow: ' + isGoTOFirstRow);
```
## goToLastRow
goToLastRow(): boolean
转到结果集的最后一行。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let isGoToLastRow = resultSet.goToLastRow();
console.info('resultSet.goToLastRow: ' + isGoToLastRow);
```
## goToNextRow
goToNextRow(): boolean
转到结果集的下一行。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**返回值:**
| 类型 | 说明 |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let isGoToNextRow = resultSet.goToNextRow();
console.info('resultSet.goToNextRow: ' + isGoToNextRow);
```
## goToPreviousRow
goToPreviousRow(): boolean
转到结果集的上一行。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**返回值:**
| 类型 | 说明 |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let isGoToPreviousRow = resultSet.goToPreviousRow();
console.info('resultSet.goToPreviousRow: ' + isGoToPreviousRow);
```
## goTo
goTo(offset:number): boolean
相对于当前位置向前或向后移动指定行数。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ---------- | -------- | -------- | ------------------------------------------------------------ |
| offset | number | 是 | 表示相对于当前位置的偏移量。offset为负值表示向前偏移,正值则表示向后偏移。 |
**返回值:**
| 类型 | 说明 |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let goToNum = 1;
let isGoTo = resultSet.goTo(goToNum);
console.info('resultSet.goTo: ' + isGoTo);
```
## goToRow
goToRow(position: number): boolean
转到结果集的指定行。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ---------- | -------- | -------- | ------------------------ |
| position | number | 是 | 表示要移动到的指定位置。 |
**返回值:**
| 类型 | 说明 |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
**示例:**
```ts
let goToRowNum = 2
let isGoToRow = resultSet.goToRow(goToRowNum);
console.info('resultSet.goToRow: ' + isGoToRow);
```
## getBlob
getBlob(columnIndex: number): Uint8Array
以字节数组的形式获取当前行中指定列的值。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number | 是 | 指定的列索引,从0开始。 |
**返回值:**
| 类型 | 说明 |
| ---------- | -------------------------------- |
| Uint8Array | 以字节数组的形式返回指定列的值。 |
**示例:**
```ts
let columnIndex = 1
let goToFirstRow = resultSet.goToFirstRow();
let getBlob = resultSet.getBlob(columnIndex);
console.info('resultSet.getBlob: ' + getBlob);
```
## getString
getString(columnIndex: number): *string*
以字符串形式获取当前行中指定列的值。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number | 是 | 指定的列索引,从0开始。 |
**返回值:**
| 类型 | 说明 |
| ------ | ---------------------------- |
| string | 以字符串形式返回指定列的值。 |
**示例:**
```ts
let columnIndex = 1
let goToFirstRow = resultSet.goToFirstRow();
let getString = resultSet.getString(columnIndex);
console.info('resultSet.getString: ' + getString);
```
## getLong
getLong(columnIndex: number): number
以长整数值形式获取当前行中指定列的值。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number | 是 | 指定的列索引,从0开始。 |
**返回值:**
| 类型 | 说明 |
| ------ | -------------------------- |
| number | 以长整数值形式返回指定列的值。 |
**示例:**
```ts
let columnIndex = 1
let goToFirstRow = resultSet.goToFirstRow();
let getLong = resultSet.getLong(columnIndex);
console.info('resultSet.getLong: ' + getLong);
```
## getDouble
getDouble(columnIndex: number): number
以值类型为双浮点数形式获取当前行中指定列的值。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number | 是 | 指定的列索引,从0开始。 |
**返回值:**
| 类型 | 说明 |
| ------ | ---------------------------- |
| number | 值类型为双浮点数形式返回指定列的值。 |
**示例:**
```ts
let columnIndex = 1
let goToFirstRow = resultSet.goToFirstRow();
let getDouble = resultSet.getDouble(columnIndex);
console.info('resultSet.getDouble: ' + getDouble);
```
## close
close(): void
关闭结果集。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**示例:**
```ts
resultSet.close();
```
## getColumnIndex
getColumnIndex(columnName: string): number
根据指定的列名获取列索引。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ---------- | -------- | -------- | -------------------------- |
| columnName | string | 是 | 表示结果集中指定列的名称。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------------------ |
| number | 返回指定列的索引。 |
**示例:**
```ts
let ColumnName = "name"
let getColumnIndex = resultSet.getColumnIndex(ColumnName)
console.info('resultSet.getColumnIndex: ' + getColumnIndex);
```
## getColumnName
getColumnName(columnIndex: number): *string*
根据指定的列索引获取列名。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | -------------------------- |
| columnIndex | number | 是 | 表示结果集中指定列的索引。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------------------ |
| string | 返回指定列的名称。 |
**示例:**
```ts
let columnIndex = 1
let getColumnName = resultSet.getColumnName(columnIndex)
console.info('resultSet.getColumnName: ' + getColumnName);
```
## getDataType
getDataType(columnIndex: number): DataType
指定列索引获取该列的数据类型。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
**参数:**
| **参数名** | **类型** | **必填** | 说明 |
| ----------- | -------- | -------- | -------------------------- |
| columnIndex | number | 是 | 表示结果集中指定列的索引。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ------------------ |
| [DataType](#datatype) | 返回指定列的类型。 |
**示例:**
```ts
let columnIndex = 1;
let getDataType = resultSet.getDataType(columnIndex);
console.info('resultSet.getDataType: ' + getDataType);
```
## DataType
数据类型枚举。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
| 名称 | 值 | 说明 |
| ----------- | ------ | -------------------- |
| TYPE_NULL | 0 | 表示值类型为空。 |
| TYPE_LONG | 1 | 表示值类型为长整数值。 |
| TYPE_DOUBLE | 2 | 表示值类型为双浮点数。 |
| TYPE_STRING | 3 | 表示值类型为字符串。 |
| TYPE_BLOB | 4 | 表示值类型为字节数组。 |
\ No newline at end of file
# 数据集
**数据集(ValuesBucket)** 是开发者向数据库插入的数据集合,数据集以键-值对的形式进行传输。
>**说明:**
>
>本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```ts
import { ValueType } from '@ohos.data.ValuesBucket';
import { ValuesBucket } from '@ohos.data.ValuesBucket';
```
## ValueType
该类型用于表示数据库允许的数据字段类型。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
| 名称 | 说明 |
| ------- | -------------------- |
| number | 表示字段类型为数字。 |
| string | 表示字段类型为字符串。 |
| boolean | 表示字段类型为布尔值。 |
## ValuesBucket
该类型用于存储一系列键值对。
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
| 名称 | 参数类型 | 必填 | 说明 |
| ------------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| [key: string] | [ValueType](#valuetype)\| Uint8Array \| null | 是 | 键的类型为字符串型;值的类型可以为数字、字符串、布尔值、无符号整型8位数组、空值。 |
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册