From bf351babf1fad177ff470d1606594a9ebe16c7c7 Mon Sep 17 00:00:00 2001 From: songruirui Date: Mon, 4 Jul 2022 18:35:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=84=8F=E8=A7=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: songruirui --- .../database/database-datashare-guildlines.md | 127 ++++++------------ .../database/database-datashare-overview.md | 30 ++--- .../database/figures/zh-cn_DataShare.png | Bin 30627 -> 33746 bytes 3 files changed, 53 insertions(+), 104 deletions(-) diff --git a/zh-cn/application-dev/database/database-datashare-guildlines.md b/zh-cn/application-dev/database/database-datashare-guildlines.md index 571c3b991f..133848c86c 100644 --- a/zh-cn/application-dev/database/database-datashare-guildlines.md +++ b/zh-cn/application-dev/database/database-datashare-guildlines.md @@ -2,11 +2,11 @@ ## 场景介绍 DataShare,用于应用管理其自身数据,并支持同个设备上不同应用间的数据共享。 -DataShare可分为数据的提供方和访问方两部分,提供方可以选择性实现数据的增、删、改、查,以及文件打开等功能,并对外提供这些接口。访问方利用工具类,便可以访问提供方提供的各种功能。 +DataShare可分为数据的提供方和访问方两部分,提供方可以选择性实现数据的增、删、改、查,以及文件打开等功能,并对外共享这些数据。访问方利用工具类,便可以访问提供方提供的这些数据。 ## 接口说明 -**表1** DataShare提供方需要实现的API +**表1** 数据提供方API说明 |接口名|描述| |:------|:------| @@ -15,22 +15,32 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 |update?(uri: string, predicates: DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void|业务函数,在访问方更新数据时回调。| |query?(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<Object>): void|业务函数,在访问方查询数据时回调。| |delete?(uri: string, predicates: DataSharePredicates, callback: AsyncCallback<number>): void|业务函数,在访问方删除数据时回调。| -|batchInsert?(uri: string, valueBuckets: Array<ValuesBucket>, callback: AsyncCallback<number>): void|业务函数,在访问方调用批量插入数据接口时回调。| -|getType?(uri: string, callback: AsyncCallback<string>): void|业务函数,返回URI所指定数据的MIME类型。| -|getFileTypes?(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>): void|业务函数,返回支持的文件的MIME类型。| -|normalizeUri?(uri: string, callback: AsyncCallback<string>): void|业务函数,实现对URI进行规范化。一个规范化的URI可以支持跨设备使用、持久化、备份和还原等,当上下文改变时仍然可以引用到相同的数据项。| -|denormalizeUri?(uri: string, callback: AsyncCallback<string>): void|业务函数,实现将规范化URI转换成非规范化的URI。| -|openFile?(uri: string, mode: string, callback: AsyncCallback<number>): void|业务函数,在访问方调用打开文件时回调。提供方需要实现按mode所指定的方式打开uri所指定的文件,并返回其文件描述符。| +完整的数据提供方接口请见[DataShareExtensionAbility](../reference/apis/js-apis-application-DataShareExtensionAbility.md)。 + +**表2** 数据访问方API说明 + +| 接口名 | 描述 | +| :----------------------------------------------------------- | :--------------------------------- | +| createDataShareHelper(context: Context, uri: string, callback: AsyncCallback<DataShareHelper>): void | 创建DataShare工具类。 | +| insert(uri: string, value: ValuesBucket, callback: AsyncCallback<number>): void | 将单条数据记录插入数据库。 | +| update(uri: string, predicates: DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void | 更新数据库中的数据记录。 | +| query(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<DataShareResultSet>): void | 查询数据库中的数据。 | +| delete(uri: string, predicates: DataSharePredicates, callback: AsyncCallback<number>): void | 从数据库中删除一条或多条数据记录。 | + +完整的数据访问方接口请见[DataShareHelper](../reference/apis/js-apis-dataShareHelper.md)。 + +## 开发场景 -## 开发步骤 ### 数据提供方应用的开发(仅限系统应用) -1. 数据提供方(也称服务端)应用的开发者可继承于DataShareExtensionAbility,并根据自己的需求或目标选择性实现Insert、Query、Update、Delete等接口的业务内容,例如数据提供方只提供查询服务,则可只重写查询接口。业务的实现可由开发者自定义,例如数据存储实现可以选择OpenHarmony支持的数据库,也可以直接使用文件进行读写,甚至可以访问网络数据。由此可见,DataShare并不产生或存储数据,它只是“数据的搬运工”。 +1. 数据提供方(也称服务端)继承于DataShareExtensionAbility,开发者可并根据应用需求选择性重写其业务实现。例如数据提供方只提供查询服务,则可只重写查询接口。 + +2. 数据提供方的业务实现由开发者自定义。例如可以通过数据库、读写文件或访问网络等各方式实现数据提供方的数据存储。 创建数据提供方的代码示例如下: - ```ets + ```ts import Extension from '@ohos.application.DataShareExtensionAbility' import rdb from '@ohos.data.rdb'; import fileIo from '@ohos.fileio' @@ -127,79 +137,21 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 console.error('error' + err); } } - - batchInsert(uri: string, valueBuckets, callback) { - if (valueBuckets == null || valueBuckets.length == undefined) { - console.info('invalid valueBuckets'); - return; - } - let resultNum = valueBuckets.length - valueBuckets.forEach(vb => { - console.info('valueBuckets:' + JSON.stringify(vb)); - rdbStore.insert(TBL_NAME, vb, function (err, ret) { - console.info('callback ret:' + ret); - if (callback != undefined) { - callback(err, resultNum); - } - }); - }); - } - - getType(uri: string,callback) { - let ret = "image"; - console.info('ret:' + ret); - let err = {"code":0}; - callback(err,ret); - return ret; - } - - getFileTypes(uri: string, mimeTypeFilter: string, callback) { - let ret = new Array("type01", "type02", "type03"); - console.info('ret:' + ret); - let err = {"code":2}; - callback(err,ret); - return ret; - } - - openFile(uri: string, mode: string, callback) { - fileIo.open(result, 0o2 | 0o100, 0o666, function(err, fd) { - if(err) { - console.info('OpenFile err = ' + err); - } - let num = fileIo.writeSync(fd, "this is a interesting test of DataShare"); - callback(err,fd); - }) - } - - normalizeUri(uri: string,callback) { - let ret = "normalize+" + uri; - console.info('ret:' + ret); - let err = {"code":2}; - callback(err,ret); - } - - denormalizeUri(uri: string,callback) { - let ret = "denormalize+" + uri; - console.info('ret:' + ret); - let err = {"code":2}; - callback(err,ret); - return ret; - } }; ``` -2. 子模块配置 +3. 子模块配置 | Json重要字段 | 备注说明 | | ------------ | ------------------------------------------------------------ | - | "name" | Ability名称,对应Ability派生的Data类名。 | - | "type" | Ability类型,Data对应的Ability类型为”data“。 | + | "name" | Ability名称,对应Ability派生的extension类名。 | + | "type" | Ability类型,DataShare对应的Ability类型为”dataShare“,表示基于datashare模板开发的。 | | "uri" | 通信使用的URI。 | - | "visible" | 对其他应用是否可见,设置为true时,Data才能与其他应用进行通信传输数据。 | + | "visible" | 对其他应用是否可见,设置为true时,才能与其他应用进行通信传输数据。 | **module.json5配置样例** - ```ets + ```ts "extensionAbilities": [ { "srcEntrance": "./ets/DataShareExtAbility/DataShareExtAbility.ts", @@ -214,8 +166,6 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 ``` ### 数据访问方应用的开发 -#### 数据访问方应用开发指导 - 1. 导入基础依赖包,以及获取与数据提供方通信的URI字符串。 @@ -225,7 +175,7 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 - @ohos.data.dataShare - @ohos.data.dataSharePredicates - ```ets + ```ts // 作为参数传递的URI,与module.json5中定义的URI的区别是多了一个"/",是因为作为参数传递的URI中,在第二个与第三个"/"中间,存在一个DeviceID的参数 import Ability from '@ohos.application.Ability' import dataShare from '@ohos.data.dataShare' @@ -238,8 +188,7 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 2. 创建工具接口类对象。 - 工具接口类对象DataShareHelper相关接口可参考[DataShareHelper](../reference/apis/js-apis-dataShareHelper.md)文档。 - ```ets + ```ts export default class MainAbility extends Ability { onWindowStageCreate(windowStage) { abilityContext = this.context; @@ -249,10 +198,10 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 } } ``` - + 3. 获取到接口类对象后,便可利用其提供的接口访问提供方提供的服务,如进行数据的增删改查等。 - ```ets + ```ts // 构建一条数据 var valuesBucket = {"name": "ZhangSan", "age": 21, "isStudent": false, "Binary": new Uint8Array([1,2,3])}; var updateBucket = {"name": "LiSi", "age": 18, "isStudent": true, "Binary": new Uint8Array([1,2,3])}; @@ -264,50 +213,50 @@ DataShare可分为数据的提供方和访问方两部分,提供方可以选 {"name": "ZhaoLiu", "age": 61, "Binary": arr}); ``` - ```ets + ```ts // 插入一条数据,callback方式调用: dsHelper.insert(dseUri, valuesBucket, (err,data) => { console.log("dsHelper insert result: " + data); }); ``` - ```ets + ```ts // 插入一条数据,promise方式调用: let ret = await dsHelper.insert(dseUri, valuesBucket); ``` - ```ets + ```ts // 删除指定的数据,callback方式调用: dsHelper.delete(dseUri, da, (err,data) => { console.log("dsHelper delete result: " + data); }); ``` - ```ets + ```ts // 删除指定的数据,promise方式调用: let ret = await dsHelper.delete(dseUri, da); ``` - ```ets + ```ts // 更新数据,callback方式调用: dsHelper.update(dseUri, da, updateBucket, (err,data) => { console.log("dsHelper update result: " + data); }); ``` - ```ets + ```ts // 更新数据,promise方式调用: let ret = await dsHelper.update(dseUri, da, updateBucket); ``` - ```ets + ```ts // 查询数据,callback方式调用: dsHelper.query(dseUri, da, valArray, (err,data) => { console.log("dsHelper query result: " + data); }); ``` - ```ets + ```ts // 查询数据,promise方式调用: let result = await dsHelper.query(dseUri, da, valArray); ``` diff --git a/zh-cn/application-dev/database/database-datashare-overview.md b/zh-cn/application-dev/database/database-datashare-overview.md index 220ab376c6..1adbf97d0a 100644 --- a/zh-cn/application-dev/database/database-datashare-overview.md +++ b/zh-cn/application-dev/database/database-datashare-overview.md @@ -2,13 +2,11 @@ ## 数据共享简介 -DataShare即数据共享模块用于应用管理其自身数据,也提供了向其他应用共享以及管理其数据的方法,目前仅支持同个设备上应用之间的数据共享。 +DataShare即数据共享模块,用于应用管理其自身数据,也提供了向其他应用共享以及管理其数据的方法。目前仅支持同个设备上应用之间的数据共享。 -在许多应用场景中都需要将我们程序中的数据共享给其他程序,例如电话簿、短信、媒体库等等,当然并不是所有的数据都是允许其他应用去访问的,例如账号、密码,有些数据只允许其他应用查询不允许其增删改,例如短信,这就要求我们要对访问者进行权限的检查和限制。 +在许多应用场景中都需要用到数据共享,比如将电话簿、短信、媒体库中的数据共享给其他应用等。当然,不是所有的数据都允许其他应用访问,比如帐号、密码等;有些数据也只允许其他应用查询而不允许其删改,比如短信等。所以对于各种数据共享场景,DataSahre这样一个安全、便捷的可以跨设备、跨应用的数据共享机制是十分必需的。 -OpenHarmony提供的持久化存储方案如文件、分布式数据库,要么有隐私泄漏的风险,要么只能在当前应用中访问,要么需要开发者自己去封装,一个安全、便捷的可以跨设备跨应用的数据共享机制是必需的,DataShare便应运而生。 - -对于数据提供者来说,可以使用DataShare提供的框架轻松的实现向其他应用共享数据,而不需要自己进行繁琐的封装;对于数据访问方来说,因DataShare的访问方式不会因数据提供的方式而不同,所以只需要学习和使用一套接口,既减小了开发难度又节省了学习多种接口的时间。 +对于数据提供者来说,无需进行繁琐的封装,可直接使用DataShare框架实现向其他应用共享数据;对于数据访问方来说,因DataShare的访问方式不会因数据提供的方式而不同,所以只需要学习和使用一套接口即可,大大减少了学习时间和开发难度。 ## 基本概念 @@ -26,13 +24,15 @@ OpenHarmony提供的持久化存储方案如文件、分布式数据库,要么 - 数据集 - 只用户要插入的数据集合,可以是一条或多条数据。数据集以键值对的形式存在,值支持多种数据类型。 + 用户要插入的数据集合,可以是一条或多条数据。数据集以键值对的形式存在,键为字符串类型,值支持数字、字符串、布尔值、无符号整型数组等多种数据类型。 - 结果集 - 指用户查询之后的结果集合,可以对数据进行访问。结果集提供了灵活的数据访问方式,可以更方便的拿到用户想要的数据。 - + + 用户查询之后的结果集合,其提供了灵活的数据访问方式,以便用户获取各项数据。 + - 谓词 - 描述筛选条件的集合。既可以是查询的条件也可以是删除的条件也可以是更新的条件。 + + 用户访问数据库中的数据所使用的筛选条件,经常被应用在更新数据、删除数据和查询数据中等场景。 ## 运作机制 @@ -41,14 +41,14 @@ OpenHarmony提供的持久化存储方案如文件、分布式数据库,要么 ![](figures/zh-cn_DataShare.png) -DataShareExtAbility模块即为数据提供方,实现跨应用数据共享的相关业务。DataShareHelper模块为数据访问方提供操作DataShareExtAbility即数据提供方的接口。数据访问方与提供方通过IPC进行通信,数据提供方实现可以是数据库,也可以是其他数据存储方式。 +- DataShareExtAbility模块为数据提供方,实现跨应用数据共享的相关业务。 +- DataShareHelper模块为数据访问方,提供各种访问数据的接口,包括增删改查等。 +- 数据访问方与提供方通过IPC进行通信,数据提供方可以通过数据库实现,也可以通过其他数据存储方式实现。 -ResultSet模块提供跨应用操作或访问查询出的结果集的接口,结果集使用共享内存实现。 +- ResultSet模块通过共享内存实现,用于存储查询数据得到的结果集,并提供了遍历结果集的方法。 ## 约束与限制 -**数据共享的约束与限制**: - -- DataShare受到数据提供方所使用数据库,例如支持的数据模型,Key的长度、Value的长度、每个应用程序最多支持同时打开数据库数量都受到数据库的限制。 +- DataShare受到数据提供方所使用数据库的一些限制。例如支持的数据模型、Key的长度、Value的长度、每个应用程序支持同时打开数据库的最大数量等,都会受到使用的数据库的限制。 -- 因DataShare内部实现依赖于IPC通信,所以支持数据量的大小受到IPC通信的约束与限制。 +- 因DataShare内部实现依赖于IPC通信,所以数据集、谓词、结果集等的载荷受到IPC通信的约束与限制。 diff --git a/zh-cn/application-dev/database/figures/zh-cn_DataShare.png b/zh-cn/application-dev/database/figures/zh-cn_DataShare.png index 63d2aea85ed9e89eaa3edd1ac164789c7f4bb7a5..f0d41d83e842f281232331c45cfbcd20df21c588 100644 GIT binary patch literal 33746 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 Q-M?(xWb+-%(lzvd0aRGk(*OVf -- GitLab