• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 数据管理开发常见问题
2
3
4## 关系型数据库rdb中如何进行加密
5
6适用于:Openharmony 3.1 Beta5  API 9
7
8**解决措施**
9
10创建关系型数据库,可通过StoreConfig管理关系型数据库配置,其中encrypt属性指定数据库是否加密。
11
12**参考链接**
13
14[关系型数据库](../reference/apis/js-apis-data-relationalStore.md#storeconfig)
15
16## 关系型数据库rdb中使用TRUNCATE TABLE语句无法清空表数据
17
18适用于:OpenHarmony SDK 3.2.9.2版本,API9
19
20**问题现象**
21
22通过TRUNCATE TABLE语句清空表数据时报错。
23
24**解决措施**
25
26关系型数据库rdb使用Sqlite数据库, 它不支持 TRUNCATE TABLE 语句,建议使用delete语句,如:DELETE FROM sqlite\_sequence WHERE name = 'table\_name' ,另外发生该错误会抛出空异常。
27
28## 关系型数据库rdb支持哪些数据类型
29
30适用于:OpenHarmony SDK 3.0版本以上,API 9 Stage模型
31
32**解决措施**
33
34关系型数据库rdb支持的数据类型有:number、string、boolean。其中number为数字类型,支持Double,Long,Float,Int,Int64,最大精度为十进制17位数字。
35
36## 如何实现应用数据持久化存储
37
38适用于 OpenHarmony 3.2 Beta5 API 9
39
40**解决措施**
41
42通过PersistentStorage类实现管理应用持久化数据,可以将特定标记的持久化数据链接到AppStorage中,并由AppStorage接口访问对应持久化数据。PersistentStorage持久化后的数据会生成本地xml文件保存,文件路径为/data/app/el2/100/base/<bundleName\>/haps/<hapName\>/files/persistent\_storage。
43
44示例:
45
46```
47AppStorage.Link('varA')
48PersistentStorage.PersistProp("varA", "111");
49@Entry
50@Component
51struct Index {
52  @StorageLink('varA') varA: string = ''
53  build() {
54    Column() {
55      Text('varA: ' + this.varA).fontSize(20)
56      Button('Set').width(100).height(100).onClick(() => {
57        this.varA += '333'
58      })
59    }
60    .width('100%')
61    .height('100%')
62  }
63}
64```
65
66**参考链接**
67
68[持久化数据管理\(OpenHarmony\)](../quick-start/arkts-persiststorage.md)
69
70## 如何将PixelMap的数据存储到数据库中
71
72适用于:OpenHarmony 3.2 Beta5  API 9
73
74**解决措施**
75
76PixelMap应该被转换成相应的ArrayBuffer再放进数据库。
77
78**参考链接**
79
80[readPixelsToBuffer](../reference/apis/js-apis-image.md#readpixelstobuffer7-1)
81
82## 如何获取rdb关系型数据库文件
83
84适用于:OpenHarmony 3.2 Beta5  API 9
85
86**问题现象**
87
88关系型数据库的获取问题
89
90**解决措施**
91
92开发者可使用hdc命令拷贝文件,其中文件路径为: /data/app/el2/100/database/包名/entry/rdb/ ,然后拷贝该路径下的文件,拷贝完成后,可以通过SQLite工具打开该数据库文件。
93
94示例:
95
96```
97 hdc file recv /data/app/el2/100/database/<bundleName>/entry/db/<tableName>  ./<path>
98```
99
100## 数据库在系统层面是否有锁机制,开发过程中是否需要关系数据库加锁问题
101
102适用于:OpenHarmony 3.2 Beta5  API 9
103
104**问题现象**
105
106关系型数据库的加锁疑问
107
108**解决措施**
109
110系统提供的分布式数据服务、关系型数据库和首选项均有锁机制,开发者无需关注。
111
112## 在@ohos.data.storage轻量级存储中,调用put方法保存数据后,再重启应用后调用get方法为什么无法获取到保存的值
113
114适用于:OpenHarmony 3.2 Beta5  API 9
115
116**问题现象**
117
118关系型数据库的保存以及重启时的调用
119
120**解决措施**
121
122在storage轻量级存储中,调用put方法,只是将数据保存在内存中,并不会持久化到硬盘中,在退出应用后会将内存中的数据清空。如果想持久化到硬盘中,则在调用put方法后需要再调用flush或flushSync接口才行。数据持久化后重启应用时就可以通过get方法获取到之前保存的数据。
123
124
125## rdb关系型数据库中TEXT类型保存超长文本失败
126
127适用于:OpenHarmony 3.2 Beta5  API 9
128
129**问题现象**
130
131API8版本rdb关系型数据库中TEXT类型保存超长文本失败
132
133**解决措施**
134
135API9版本之前对TEXT文本存储长度限制在1024字节,所以会存在超长文本保存失败的情况。
136在API9的版本中已经放开了长度限制。
137
138## Preferences.put缓存成功,但get的结果一直是undefined
139
140适用于:OpenHarmony 3.2 Beta5  API 9
141
142**问题现象**
143
144使用首选项保存数据成功,但是获取数据为空。
145
146**解决措施**
147
1481. 使用put操作后,使用flush持久化数据,然后再使用get获取数据。
149
1502. 由于flush操作是异步执行,将Storage实例通过异步线程回写入文件中,  所以需要等待flush操作执行完成后,再执行get操作。
151
152## 使用RDB数据库时,能否指定内存数据库模式
153
154适用于:OpenHarmony 3.2 Beta5  API 9
155
156**解决措施**
157
158RDB数据库底层使用的是SQLite,默认的内存数据库模式是文件,不支持修改。
159
160