Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
44832759
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
44832759
编写于
8月 25, 2022
作者:
O
openharmony_ci
提交者:
Gitee
8月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
!8660 master:database及USB示例代码格式化,修改多余/缺少空格&表格优化:需同步翻译
Merge pull request !8660 from 葛亚芳/master
上级
a6785a7e
3eeb9576
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
189 addition
and
174 deletion
+189
-174
zh-cn/application-dev/database/database-datashare-guidelines.md
...application-dev/database/database-datashare-guidelines.md
+14
-13
zh-cn/application-dev/database/database-distributedobject-guidelines.md
...ion-dev/database/database-distributedobject-guidelines.md
+76
-68
zh-cn/application-dev/database/database-distributedobject-overview.md
...ation-dev/database/database-distributedobject-overview.md
+2
-2
zh-cn/application-dev/database/database-mdds-guidelines.md
zh-cn/application-dev/database/database-mdds-guidelines.md
+41
-39
zh-cn/application-dev/database/database-preference-guidelines.md
...pplication-dev/database/database-preference-guidelines.md
+32
-31
zh-cn/application-dev/database/database-relational-guidelines.md
...pplication-dev/database/database-relational-guidelines.md
+10
-7
zh-cn/application-dev/device/usb-guidelines.md
zh-cn/application-dev/device/usb-guidelines.md
+14
-14
未找到文件。
zh-cn/application-dev/database/database-datashare-guidelines.md
浏览文件 @
44832759
...
...
@@ -144,11 +144,12 @@ DataShare即数据共享模块,提供了向其他应用共享以及管理其
let
dseUri
=
(
"
datashare:///com.samples.datasharetest.DataShare
"
);
```
2
.
创建工具接口类对象。
3
.
创建工具接口类对象。
```
ts
let
dsHelper
;
let
abilityContext
;
export
default
class
MainAbility
extends
Ability
{
onWindowStageCreate
(
windowStage
)
{
abilityContext
=
this
.
context
;
...
...
@@ -159,33 +160,33 @@ DataShare即数据共享模块,提供了向其他应用共享以及管理其
}
```
3
.
获取到接口类对象后,便可利用其提供的接口访问提供方提供的服务,如进行数据的增删改查等。
4
.
获取到接口类对象后,便可利用其提供的接口访问提供方提供的服务,如进行数据的增删改查等。
```
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
])
};
let
da
=
new
dataSharePredicates
.
DataSharePredicates
();
var
valArray
=
new
Array
(
"
*
"
);
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
])
};
let
da
=
new
dataSharePredicates
.
DataSharePredicates
();
var
valArray
=
new
Array
(
"
*
"
);
let
people
=
new
Array
(
{
"
name
"
:
"
LiSi
"
,
"
age
"
:
41
,
"
Binary
"
:
ar
},
{
"
name
"
:
"
WangWu
"
,
"
age
"
:
21
,
"
Binary
"
:
arr
},
{
"
name
"
:
"
ZhaoLiu
"
,
"
age
"
:
61
,
"
Binary
"
:
arr
});
{
"
name
"
:
"
LiSi
"
,
"
age
"
:
41
,
"
Binary
"
:
ar
},
{
"
name
"
:
"
WangWu
"
,
"
age
"
:
21
,
"
Binary
"
:
arr
},
{
"
name
"
:
"
ZhaoLiu
"
,
"
age
"
:
61
,
"
Binary
"
:
arr
});
// 插入一条数据
dsHelper
.
insert
(
dseUri
,
valuesBucket
,
(
err
,
data
)
=>
{
console
.
log
(
"
dsHelper insert result:
"
+
data
);
console
.
log
(
"
dsHelper insert result:
"
+
data
);
});
// 删除指定的数据
dsHelper
.
delete
(
dseUri
,
da
,
(
err
,
data
)
=>
{
console
.
log
(
"
dsHelper delete result:
"
+
data
);
console
.
log
(
"
dsHelper delete result:
"
+
data
);
});
// 更新数据
dsHelper
.
update
(
dseUri
,
da
,
updateBucket
,
(
err
,
data
)
=>
{
console
.
log
(
"
dsHelper update result:
"
+
data
);
console
.
log
(
"
dsHelper update result:
"
+
data
);
});
// 查询数据
dsHelper
.
query
(
dseUri
,
da
,
valArray
,
(
err
,
data
)
=>
{
console
.
log
(
"
dsHelper query result:
"
+
data
);
console
.
log
(
"
dsHelper query result:
"
+
data
);
});
```
zh-cn/application-dev/database/database-distributedobject-guidelines.md
浏览文件 @
44832759
...
...
@@ -2,22 +2,23 @@
## 场景介绍
分布式数据对象
通过屏蔽设备间复杂的数据交互处理,提供了与本地变量类似的极简操作,当设备1的应用A的分布式数据对象增、删、改数据后,设备2的应用A也可以获取到对应的数据变化,同时还能监听数据变更以及对端数据对象的上下线。分布式数据对象支持的数据类型包括数字型、字符型、布尔型等基本类型,同时也支持数组、基本类型嵌套等复杂类型
。
分布式数据对象
为开发者在分布式应用场景下提供简单易用的功能接口,可实现多设备间同应用的数据协同,同时设备间还可以监听对象的状态和数据变更
。
比如,当设备1上应用A的分布式数据对象增、删、改数据后,设备2上应用A也可以获取到对应的数据变化,同时还能监听数据变更以及对端数据对象的上下线。
## 接口说明
具体
分布式数据对象相关功能接口请见
[
分布式数据对象
](
../reference/apis/js-apis-data-distributedobject.md
)
。
分布式数据对象相关功能接口请见
[
分布式数据对象
](
../reference/apis/js-apis-data-distributedobject.md
)
。
### 创建数据对象实例
创建一个分布式数据对象实例,
用户
可以通过source指定分布式对象中的属性。
创建一个分布式数据对象实例,
开发者
可以通过source指定分布式对象中的属性。
**表1**
分布式数据对象实例创建接口
| 包名 | 接口名 | 描述 |
| 包名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| ohos.data.distributedDataObject| createDistributedObject(source: object): DistributedObject | 创建一个分布式数据对象实例,用于数据操作
<br>
-
source:设置distributedObject的属性。
<br>
-
DistributedObject:返回值是创建好的分布式对象。|
| ohos.data.distributedDataObject| createDistributedObject(source: object): DistributedObject | 创建一个分布式数据对象实例,用于数据操作
。
<br>
-
source:设置distributedObject的属性。
<br>
-
DistributedObject:返回值是创建好的分布式对象。 |
### 创建分布式数据对象sessionId
...
...
@@ -35,16 +36,17 @@
**表3**
分布式数据对象sessionId设置接口
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| DistributedDataObject | setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId
<br>
sessionId:分布式对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。
|
| DistributedDataObject | setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId
。
<br>
sessionId:分布式对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。
|
### 订阅数据变更
订阅数据变更需要指定Callback作为回调方法,订阅的数据对象发生数据变更后,Callback被回调。
**表4**
分布式数据对象数据变更订阅接口
| 类名 | 接口名 | 描述 |
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| DistributedDataObject| on(type: 'change', callback: Callback
<
{
sessionId:
string
,
fields:
Array
&
lt
;
string
&
gt
;
}
>
): void | 订阅数据变更。 |
| DistributedDataObject| on(type: 'change', callback: Callback
<
{
sessionId:
string
,
fields:
Array
&
lt
;
string
&
gt
;
}
>
): void | 订阅数据变更。 |
| DistributedDataObject| off(type: 'change', callback?: Callback
<
{
sessionId:
string
,
fields:
Array
&
lt
;
string
&
gt
;
}
>
): void | 注销订阅。需要删除的变更回调,若不设置则删除该对象所有的变更回调。 |
### 订阅数据对象上下线
...
...
@@ -73,8 +75,6 @@
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| DistributedDataObject | save(deviceId: string): Promise
<
SaveSuccessResponse
>
| 保存数据对象。 |
| DistributedDataObject| save(deviceId: string, callback: AsyncCallback
<
SaveSuccessResponse
>
): void | 保存数据对象。 |
| DistributedDataObject | revokeSave(callback: AsyncCallback
<
RevokeSaveSuccessResponse
>
): void | 撤回已保存的数据对象。 |
| DistributedDataObject| revokeSave(): Promise
<
RevokeSaveSuccessResponse
>
| 撤回已保存的数据对象。 |
## 开发步骤
...
...
@@ -82,11 +82,13 @@
以一次分布式数据对象同步为例,说明开发步骤。
1.
准备工作,导入@ohos.data.distributedDataObject模块到开发环境。
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
;
```
2.
请求权限。需要在
`config.json`
里面进行配置请求权限,示例代码如下:
```
```
2.
请求权限。需要在
`config.json`
或
`module.json5`
文件里进行配置请求权限,示例代码如下:
```json
{
"module": {
"reqPermissions": [
...
...
@@ -96,8 +98,9 @@
]
}
}
```
```
这个权限还需要在应用首次启动的时候弹窗获取用户授权,可以通过如下代码实现:
```js
import featureAbility from '@ohos.ability.featureAbility';
...
...
@@ -110,34 +113,50 @@
})
console.info('end grantPermission');
}
grantPermission();
```
3.
获取分布式数据对象实例。
以下为创建分布式数据对象的代码示例:
```
js
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
var
sessionId
=
distributedObject
.
genSessionId
();
```
4.
加入同步组网。同步组网中的数据对象分为发起方和被拉起方。
以下为加入同步组网的代码示例:
```
js
// 发起方
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
"
jack
"
,
age
:
18
,
isVis
:
true
,
parent
:{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
},
list
:[{
mother
:
"
jack mom
"
},
{
father
:
"
jack Dad
"
}]});
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
"
jack
"
,
age
:
18
,
isVis
:
true
,
parent
:
{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
},
list
:
[{
mother
:
"
jack mom
"
},
{
father
:
"
jack Dad
"
}]
});
local_object
.
setSessionId
(
sessionId
);
// 被拉起方
var
remote_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
remote_object
.
setSessionId
(
sessionId
);
var
remote_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
// 收到status上线后remote_object同步数据,即name变成jack,age是18
remote_object
.
setSessionId
(
sessionId
);
```
5.
监听对象数据变更。可监听对端数据的变更,以callback作为变更回调实例。
...
...
@@ -162,19 +181,21 @@
6.
修改对象属性,对象属性支持基本类型(数字类型、布尔类型、字符串类型)以及复杂类型(数组、基本类型嵌套等)。
以下为修改分布式数据对象属性的代码示例:
```
js
local_object
.
name
=
"
jack
"
;
local_object
.
age
=
19
;
local_object
.
isVis
=
false
;
local_object
.
parent
=
{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
};
local_object
.
list
=
[{
mother
:
"
jack mom
"
},
{
father
:
"
jack Dad
"
}];
local_object
.
parent
=
{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
};
local_object
.
list
=
[{
mother
:
"
jack mom
"
},
{
father
:
"
jack Dad
"
}];
```
>
![icon-note.gif](public_sys-resources/icon-note.gif)
**说明:**
> **说明:**
> 针对复杂类型的数据修改,目前支持对根属性的修改,暂不支持对下级属性的修改。示例如下:
```
js
// 支持的修改方式
local_object
.
parent
=
{
mother
:
"
mom
"
,
father
:
"
dad
"
};
local_object
.
parent
=
{
mother
:
"
mom
"
,
father
:
"
dad
"
};
// 不支持的修改方式
local_object
.
parent
.
mother
=
"
mom
"
;
```
...
...
@@ -182,12 +203,14 @@
7.
访问对象。可以通过直接获取的方式访问到分布式数据对象的属性,且该数据为组网内的最新数据。
以下为访问对象的代码示例:
```
js
console
.
info
(
"
name
"
+
local_object
[
"
name
"
]);
```
8.
删除监听数据变更。可以指定删除监听的数据变更回调;也可以不指定,这将会删除该分布式数据对象的所有数据变更回调。
以下为取消监听数据变更的代码示例:
```
js
// 删除变更回调changeCallback
local_object
.
off
(
"
change
"
,
changeCallback
);
...
...
@@ -196,6 +219,7 @@
```
9.
监听分布式对象的上下线。可以监听对端分布式数据对象的上下线。
以下为访问对象的代码示例:
```
js
function
statusCallback
(
sessionId
,
networkId
,
status
)
{
this
.
response
+=
"
status changed
"
+
sessionId
+
"
"
+
status
+
"
"
+
networkId
;
...
...
@@ -206,57 +230,41 @@
10.
保存和撤回已保存的数据对象。
1.callback方式
```js
// 保存数据对象
local_object.save("local", (result, data) => {
console.log("save callback");
console.info("save sessionId " + data.sessionId);
console.info("save version " + data.version);
console.info("save deviceId " + data.deviceId);
});
// 撤回保存的数据对象
local_object.revokeSave((result, data) => {
console.log("revokeSave callback");
console.info("revokeSave sessionId " + data.sessionId);
});
```
2.Promise方式
```js
// 保存数据对象
g_object.save("local").then((result) => {
console.info("save sessionId " + result.sessionId);
console.info("save version " + result.version);
console.info("save deviceId " + result.deviceId);
}, (result)=>{
console.info("save local failed.");
});
// 撤回保存的数据对象
g_object.revokeSave().then((result) => {
console.info("revokeSave success.");
}, (result)=>{
console.info("revokeSave failed.");
});
```
```js
// 保存数据对象
g_object.save("local").then((result) => {
console.info("save sessionId " + result.sessionId);
console.info("save version " + result.version);
console.info("save deviceId " + result.deviceId);
}, (result) => {
console.info("save local failed.");
});
// 撤回保存的数据对象
g_object.revokeSave().then((result) => {
console.info("revokeSave success.");
}, (result) => {
console.info("revokeSave failed.");
});
```
11.
删除监听分布式对象的上下线。可以指定删除监听的上下线回调;也可以不指定,这将会删除该分布式数据对象的所有上下线回调。
以下为取消监听数据变更的代码示例:
```js
```js
// 删除上下线回调statusCallback
local_object.off("status", this.statusCallback);
// 删除所有的上下线回调
local_object.off("status");
```
```
12.
退出同步组网。分布式对象退出组网后,本地的数据变更对端不会同步。
以下为退出同步组网的代码示例:
```js
local_object.setSessionId("");
```
以下为退出同步组网的代码示例:
```js
local_object.setSessionId("");
```
## 相关实例
针对分布式数据对象,有以下相关实例可供参考:
-
[
`DistributedNote`:分布式备忘录(eTS)(API9)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedNote
)
-
[
`DistributedObjectDms`:分布式跑马灯(eTS)(API9)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedObjectDms
)
-
[
`DistributedObjectDms`:分布式跑马灯(eTS)(API9)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedObjectDms
)
\ No newline at end of file
zh-cn/application-dev/database/database-distributedobject-overview.md
浏览文件 @
44832759
# 分布式数据对象概述
分布式数据对象管理框架是一款面向对象的内存数据管理框架。向应用开发者提供内存对象的创建、查询、删除、修改、订阅等基本数据对象的管理能力
;
同时具备分布式能力,满足超级终端场景下,相同应用多设备间的数据对象协同需求。
分布式数据对象管理框架是一款面向对象的内存数据管理框架。向应用开发者提供内存对象的创建、查询、删除、修改、订阅等基本数据对象的管理能力
;
同时具备分布式能力,满足超级终端场景下,相同应用多设备间的数据对象协同需求。
## 基本概念
...
...
@@ -36,7 +36,7 @@
-
不同设备间只有相同bundleName的应用才能直接同步。
-
不建议创建过多分布式数据对象,每个分布式数据对象将占用100-150KB内存。
-
不建议创建过多
的
分布式数据对象,每个分布式数据对象将占用100-150KB内存。
-
每个分布式数据对象大小不超过500KB。
...
...
zh-cn/application-dev/database/database-mdds-guidelines.md
浏览文件 @
44832759
...
...
@@ -6,7 +6,7 @@
## 接口说明
具体
分布式数据相关功能接口请见
[
分布式数据管理
](
../reference/apis/js-apis-distributed-data.md
)
。
分布式数据相关功能接口请见
[
分布式数据管理
](
../reference/apis/js-apis-distributed-data.md
)
。
**表1**
分布式数据服务关键API功能介绍
...
...
@@ -21,9 +21,6 @@
| on(event:'dataChange',type:SubscribeType,observer:Callback
<
ChangeNotification
>
):void
<br/>
on(event:'syncComplete',syncCallback:Callback
<
Array
<
[string,number]
>>
):void | 订阅数据库中数据的变化。 |
| sync(deviceIdList:string[],mode:SyncMode,allowedDelayMs?:number):void | 在手动模式下,触发数据库同步。 |
## 开发步骤
以单版本分布式数据库为例,说明开发步骤。
...
...
@@ -40,26 +37,27 @@
2.
创建分布式数据库管理器实例。
以下为创建分布式数据库管理器的代码示例:
```
js
let
kvManager
;
try
{
const
kvManagerConfig
=
{
bundleName
:
'
com.example.datamanagertest
'
,
userInfo
:
{
userId
:
'
0
'
,
userType
:
distributedData
.
UserType
.
SAME_USER_ID
}
const
kvManagerConfig
=
{
bundleName
:
'
com.example.datamanagertest
'
,
userInfo
:
{
userId
:
'
0
'
,
userType
:
distributedData
.
UserType
.
SAME_USER_ID
}
distributedData
.
createKVManager
(
kvManagerConfig
,
function
(
err
,
manager
)
{
if
(
err
)
{
console
.
log
(
"
createKVManager err:
"
+
JSON
.
stringify
(
err
));
return
;
}
console
.
log
(
"
createKVManager success
"
);
kvManager
=
manager
;
});
}
distributedData
.
createKVManager
(
kvManagerConfig
,
function
(
err
,
manager
)
{
if
(
err
)
{
console
.
log
(
"
createKVManager err:
"
+
JSON
.
stringify
(
err
));
return
;
}
console
.
log
(
"
createKVManager success
"
);
kvManager
=
manager
;
});
}
catch
(
e
)
{
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
}
```
...
...
@@ -69,27 +67,28 @@
2.
创建分布式数据库,建议关闭自动同步功能(
`autoSync:false`
),需要同步时主动调用
`sync`
接口。
以下为创建分布式数据库的代码示例:
```
js
let
kvStore
;
try
{
const
options
=
{
createIfMissing
:
true
,
encrypt
:
false
,
backup
:
false
,
autoSync
:
false
,
kvStoreType
:
distributedData
.
KVStoreType
.
SINGLE_VERSION
,
securityLevel
:
distributedData
.
SecurityLevel
.
S0
};
kvManager
.
getKVStore
(
'
storeId
'
,
options
,
function
(
err
,
store
)
{
if
(
err
)
{
console
.
log
(
"
getKVStore err:
"
+
JSON
.
stringify
(
err
));
return
;
}
console
.
log
(
"
getKVStore success
"
);
kvStore
=
store
;
});
const
options
=
{
createIfMissing
:
true
,
encrypt
:
false
,
backup
:
false
,
autoSync
:
false
,
kvStoreType
:
distributedData
.
KVStoreType
.
SINGLE_VERSION
,
securityLevel
:
distributedData
.
SecurityLevel
.
S0
};
kvManager
.
getKVStore
(
'
storeId
'
,
options
,
function
(
err
,
store
)
{
if
(
err
)
{
console
.
log
(
"
getKVStore err:
"
+
JSON
.
stringify
(
err
));
return
;
}
console
.
log
(
"
getKVStore success
"
);
kvStore
=
store
;
});
}
catch
(
e
)
{
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
}
```
...
...
@@ -100,6 +99,7 @@
4.
订阅分布式数据变化。
以下为订阅单版本分布式数据库数据变化通知的代码示例:
```
js
kvStore
.
on
(
'
dataChange
'
,
distributedData
.
SubscribeType
.
SUBSCRIBE_TYPE_ALL
,
function
(
data
)
{
console
.
log
(
"
dataChange callback call data:
"
+
JSON
.
stringify
(
data
));
...
...
@@ -124,7 +124,7 @@
}
console
.
log
(
"
put success
"
);
});
}
catch
(
e
)
{
}
catch
(
e
)
{
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
}
```
...
...
@@ -135,6 +135,7 @@
2.
从单版本分布式数据库中获取数据。
以下为从分布式数据库中查询字符串类型数据的代码示例:
```
js
const
KEY_TEST_STRING_ELEMENT
=
'
key_test_string
'
;
const
VALUE_TEST_STRING_ELEMENT
=
'
value-test-string
'
;
...
...
@@ -149,7 +150,7 @@
console
.
log
(
"
get success data:
"
+
data
);
});
});
}
catch
(
e
)
{
}
catch
(
e
)
{
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
}
```
...
...
@@ -163,6 +164,7 @@
> 其中`deviceManager`模块的接口均为系统接口。
以下为单版本分布式数据库进行数据同步的代码示例:
```
js
import
deviceManager
from
'
@ohos.distributedHardware.deviceManager
'
;
...
...
@@ -182,7 +184,7 @@
try
{
// 1000表示最大延迟时间为1000ms
kvStore
.
sync
(
deviceIds
,
distributedData
.
SyncMode
.
PUSH_ONLY
,
1000
);
}
catch
(
e
)
{
}
catch
(
e
)
{
console
.
log
(
"
An unexpected error occurred. Error:
"
+
e
);
}
}
...
...
zh-cn/application-dev/database/database-preference-guidelines.md
浏览文件 @
44832759
...
...
@@ -115,14 +115,15 @@
```
js
promise
.
then
((
preferences
)
=>
{
let
getPromise
=
preferences
.
get
(
'
startup
'
,
'
default
'
);
getPromise
.
then
((
value
)
=>
{
console
.
info
(
"
The value of 'startup' is
"
+
value
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
Failed to get the value of 'startup'. Cause:
"
+
err
);
})
let
getPromise
=
preferences
.
get
(
'
startup
'
,
'
default
'
);
getPromise
.
then
((
value
)
=>
{
console
.
info
(
"
The value of 'startup' is
"
+
value
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
Failed to get the value of 'startup'. Cause:
"
+
err
);
})
}).
catch
((
err
)
=>
{
console
.
info
(
"
Failed to get preferences.
"
)});
console
.
info
(
"
Failed to get preferences.
"
)
});
```
5.
数据持久化。
...
...
@@ -138,24 +139,24 @@
应用订阅数据变化需要指定observer作为回调方法。订阅的Key的值发生变更后,当执行flush方法时,observer被触发回调。
```
js
var
observer
=
function
(
key
)
{
console
.
info
(
"
The key
"
+
key
+
"
changed.
"
);
}
preferences
.
on
(
'
change
'
,
observer
);
preferences
.
put
(
'
startup
'
,
'
auto
'
,
function
(
err
)
{
if
(
err
)
{
console
.
info
(
"
Failed to put the value of 'startup'. Cause:
"
+
err
);
return
;
}
console
.
info
(
"
Succeeded in putting the value of 'startup'.
"
);
preferences
.
flush
(
function
(
err
)
{
if
(
err
)
{
console
.
info
(
"
Failed to flush. Cause:
"
+
err
);
return
;
}
console
.
info
(
"
Succeeded in flushing.
"
);
// observer will be called.
})
})
var
observer
=
function
(
key
)
{
console
.
info
(
"
The key
"
+
key
+
"
changed.
"
);
}
preferences
.
on
(
'
change
'
,
observer
);
preferences
.
put
(
'
startup
'
,
'
auto
'
,
function
(
err
)
{
if
(
err
)
{
console
.
info
(
"
Failed to put the value of 'startup'. Cause:
"
+
err
);
return
;
}
console
.
info
(
"
Succeeded in putting the value of 'startup'.
"
);
preferences
.
flush
(
function
(
err
)
{
if
(
err
)
{
console
.
info
(
"
Failed to flush. Cause:
"
+
err
);
return
;
}
console
.
info
(
"
Succeeded in flushing.
"
);
// observer will be called.
})
})
```
7.
删除指定文件。
...
...
@@ -163,12 +164,12 @@
使用deletePreferences方法从内存中移除指定文件对应的Preferences单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。删除后,数据及文件将不可恢复。
```
js
let
proDelete
=
data_preferences
.
deletePreferences
(
context
,
'
mystore
'
);
proDelete
.
then
(()
=>
{
console
.
info
(
"
Succeeded in deleting.
"
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
Failed to delete. Cause:
"
+
err
);
})
let
proDelete
=
data_preferences
.
deletePreferences
(
context
,
'
mystore
'
);
proDelete
.
then
(()
=>
{
console
.
info
(
"
Succeeded in deleting.
"
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
Failed to delete. Cause:
"
+
err
);
})
```
## 相关实例
针对首选项开发,有以下相关实例可供参考:
...
...
zh-cn/application-dev/database/database-relational-guidelines.md
浏览文件 @
44832759
...
...
@@ -198,10 +198,10 @@
import data_rdb from '@ohos.data.rdb'
const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)";
const STORE_CONFIG = {
name: "rdbstore.db"
}
const STORE_CONFIG = {
name: "rdbstore.db"
}
data_rdb.getRdbStore(this.context, STORE_CONFIG, 1, function (err, rdbStore) {
rdbStore.executeSql(CREATE_TABLE_TEST)
console.info('create table done.')
rdbStore.executeSql(CREATE_TABLE_TEST)
console.info('create table done.')
})
```
...
...
@@ -215,7 +215,7 @@
```js
var u8 = new Uint8Array([1, 2, 3])
const valueBucket = {
"name": "Tom", "age": 18, "salary": 100.5, "blobType": u8
}
const valueBucket = {
"name": "Tom", "age": 18, "salary": 100.5, "blobType": u8
}
let insertPromise = rdbStore.insert("test", valueBucket)
```
...
...
@@ -314,6 +314,7 @@
console.log('device=' + device[i] + 'data changed')
}
}
try {
rdbStore.on('dataChange', data_rdb.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver)
} catch (err) {
...
...
@@ -364,9 +365,7 @@
(1) 调用数据库的备份接口,备份当前数据库文件。
(2) 调用数据库的恢复接口,从数据库的备份文件恢复数据库文件。
示例代码如下:
示例代码如下:
```js
let promiseBackup = rdbStore.backup("dbBackup.db")
...
...
@@ -376,6 +375,10 @@
console.info('Backup failed, err: ' + err)
})
```
(2) 调用数据库的恢复接口,从数据库的备份文件恢复数据库文件。
示例代码如下:
```js
let promiseRestore = rdbStore.restore("dbBackup.db")
promiseRestore.then(() => {
...
...
zh-cn/application-dev/device/usb-guidelines.md
浏览文件 @
44832759
...
...
@@ -17,19 +17,19 @@ USB类开放能力如下,具体请查阅[API参考文档](../reference/apis/js
| 接口名 | 描述 |
| -------- | -------- |
| hasRight(deviceName:
string):
boolean | 如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。 |
| requestRight(deviceName:
string):
Promise
<
boolean
>
| 请求给定软件包的临时权限以访问设备。 |
| connectDevice(device:
USBDevice):
Readonly
<
USBDevicePipe
>
| 根据getDevices()
返回的设备信息打开USB设备。 |
| getDevices():
Array
<
Readonly
<
USBDevice
>>
| 返回USB设备的
列表。 |
| setConfiguration(pipe:
USBDevicePipe,
config:
USBConfig):
number | 设置设备的配置。 |
| setInterface(pipe:
USBDevicePipe,
iface:
USBInterface):
number | 设置设备的接口。 |
| claimInterface(pipe:
USBDevicePipe,
iface:
USBInterface,
force?:
boolean):
number | 获取接口。 |
|bulkTransfer(pipe:
USBDevicePipe,
endpoint:
USBEndpoint,
buffer:
Uint8Array,
timeout?:
number):
Promise
<
number
>
| 批量传输。 |
| closePipe(pipe:
USBDevicePipe):
number | 关闭设备消息控制通道。 |
| releaseInterface(pipe:
USBDevicePipe,
iface:
USBInterface):
number | 释放接口。 |
| getFileDescriptor(pipe:
USBDevicePipe):
number | 获取文件描述符。 |
| getRawDescriptor(pipe:
USBDevicePipe):
Uint8Array | 获取原始的USB描述符。 |
| controlTransfer(pipe:
USBDevicePipe,
contrlparam:
USBControlParams,
timeout?:
number):
Promise
<
number
>
| 控制传输。 |
| hasRight(deviceName:
string):
boolean | 如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。 |
| requestRight(deviceName:
string):
Promise
<
boolean
>
| 请求给定软件包的临时权限以访问设备。 |
| connectDevice(device:
USBDevice):Readonly
<
USBDevicePipe
>
| 根据
`getDevices()`
返回的设备信息打开USB设备。 |
| getDevices():
Array
<
Readonly
<
USBDevice
>>
| 返回USB设备
列表。 |
| setConfiguration(pipe:
USBDevicePipe,config:USBConfig):
number | 设置设备的配置。 |
| setInterface(pipe:
USBDevicePipe,iface:USBInterface):
number | 设置设备的接口。 |
| claimInterface(pipe:
USBDevicePipe,iface:USBInterface,force?:boolean):
number | 获取接口。 |
|bulkTransfer(pipe:
USBDevicePipe,endpoint:USBEndpoint,buffer:Uint8Array,timeout?:number):
Promise
<
number
>
| 批量传输。 |
| closePipe(pipe:
USBDevicePipe):
number | 关闭设备消息控制通道。 |
| releaseInterface(pipe:
USBDevicePipe,iface:USBInterface):
number | 释放接口。 |
| getFileDescriptor(pipe:
USBDevicePipe):
number | 获取文件描述符。 |
| getRawDescriptor(pipe:
USBDevicePipe):
Uint8Array | 获取原始的USB描述符。 |
| controlTransfer(pipe:
USBDevicePipe,contrlparam:USBControlParams,timeout?:number):
Promise
<
number
>
| 控制传输。 |
## 开发步骤
...
...
@@ -115,7 +115,7 @@ USB设备可作为Host设备连接Device设备进行数据传输。开发示例
打开对应接口,在设备信息(deviceList)中选取对应的interface。
interface1为设备配置中的一个接口。
*/
usb
.
claimInterface
(
pipe
,
interface1
,
true
);
usb
.
claimInterface
(
pipe
,
interface1
,
true
);
```
4.
数据传输。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录