Data Management Development
How do I encrypt an RDB store?
Applicable to: OpenHarmony 3.1 Beta 5 (API version 9)
Solution
To encrypt an RDB store, set encrypt in StoreConfig to true when creating the RDB store.
Reference
What if I failed to clear a table in an RDB store using TRUNCATE TABLE?
Applicable to: OpenHarmony SDK 3.2.9.2 (API version 9)
Symptom
An error is reported when the TRUNCATE TABLE statement is used to clear table data.
Solution
The RDB store uses SQLite and does not support the TRUNCATE TABLE statement. To clear a table in an RDB store, use the DELETE statement, for example, DELETE FROM sqlite_sequence WHERE name = 'table_name'.
What data types does an RDB store support?
Applicable to: OpenHarmony SDK 3.0 or later, API version 9 stage model
Solution
An RDB store supports data of the number, string, and Boolean types. The number type supports data of the Double, Long, Float, Int, or Int64 type, with a maximum precision of 17 decimal digits.
How do I persist application data?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Solution
You can use the PersistentStorage class to implement application data persistence. You can link the persistent data with specific tags to AppStorage, and invoke AppStorage APIs to access the persistent data. Persistent data is stored in a local XML file in /data/app/el2/100/base/<bundleName>/haps/<hapName>/files/persistent_storage.
Example:
AppStorage.Link('varA')
PersistentStorage.PersistProp("varA", "111");
@Entry
@Component
struct Index {
@StorageLink('varA') varA: string = ''
build() {
Column() {
Text('varA: ' + this.varA).fontSize(20)
Button('Set').width(100).height(100).onClick(() => {
this.varA += '333'
})
}
.width('100%')
.height('100%')
}
}
Reference
Persistent Data Management(OpenHarmony)
How do I save pixel map data to a database?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Solution
Convert the pixel map data into an ArrayBuffer and save the ArrayBuffer to your database.
Reference
How do I obtain RDB store files?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Symptom
Problem of obtaining RDB store files.
Solution
The RDB store files are stored in /data/app/el2/100/database/Bundle_name/entry/rdb/. You can use the hdc command to copy the file from the directory and use a SQLite tool to open the file.
Example:
hdc file recv /data/app/el2/100/database/<bundleName>/entry/db/<tableName> ./<path>
Do the OpenHarmony databases have a lock mechanism?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Symptom
I do not know whether I need to design a lock mechanism for databases in development.
Solution
The distributed data service (DDS), RDB store, and preferences provided OpenHarmony have a lock mechanism. You do not need to bother with the lock mechanism during the development.
What if I failed to use get() to obtain the data saved by @ohos.data.storage put()?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Symptom
After @ohos.data.storage put() is called to save data, get() is called to obtain the data. However, the data fails to be obtained.
Solution
The put() method provided by @ohos.data.storage saves data in the memory. When the application exits, the data in the memory will be cleared. If you want to persist the data, you need to call flush() or flushSync() after put(). After data is persisted, you can use get() to obtain the data after the application is restarted.
What if a large text file fails to be saved in an RDB store?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Symptom
In API version 8, large text files cannot be saved in RDB stores.
Solution
In versions earlier than API version 9, the maximum length of a text file is 1024 bytes. If the text file exceeds 1024 bytes, it cannot be saved. The limit on the text file size has been removed since API9 version.
What if undefined is returned by Preferences.get after Preferences.put() is successfully called?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Symptom
Data is successfully saved using preferences, but fails to be obtained.
Solution
-
After put() is performed, use flush() to persist the data.
-
Wait until the flush() asynchronous operation is complete, and call get().
Can I specify the in-memory database mode when using an RDB store?
Applicable to: OpenHarmony 3.2 Beta 5 (API version 9)
Solution
RDB stores use SQLite. The default in-memory database mode is file, which cannot be modified.