HarmonyOS 鸿蒙Next中rdb数据库
HarmonyOS 鸿蒙Next中rdb数据库 rdb数据库备份的时候能不能指定文件夹备份?
3 回复
【背景知识】
- 关系型数据库:ArkTS关系型数据库基于SQLite实现,为应用提供数据持久化能力。
- 关系型数据库备份:通过rdbStore.backUp(name)指定名称的形式进行数据库备份。
- fs.moveFile:将源文件移动至目标目录当中。
- 保存文件至公共目录:将文件保存至设备公共目录当中。
【解决方案】
- ArkTS创建数据库的时候,如果没有特殊指定的话,数据库db文件一般保存在数据库目录当中。数据库目录可通过应用上下文对象获取:
${this.getUIContext().getHostContext()?.databaseDir}/rdb
,创建数据库代码如下:
const STORE_CONFIG: relationalStore.StoreConfig = {
name: "RdbTest.db",
securityLevel: relationalStore.SecurityLevel.S1
}
let rdbStore = await relationalStore.getRdbStore(context, STORE_CONFIG)
执行完之后会在数据库目录生成对应的db文件:${this.getUIContext().getHostContext()?.databaseDir}/rdb/RdbTest.db
- 生成数据库备份文件,通过rdbStore.backUp(name)生成数据库备份文件,backUp备份后生成的文件和源数据库db文件路径一致。如果需要在其他路径下进行备份,可以通过fileIo.moveFile将生成的备份文件移动至指定目录,代码案例参考如下:
rdbStore.backUp('RdbTest_Back.db.back')
fileIo.moveFile(`${this.getUIContext().getHostContext()?.databaseDir}/rdb/RdbTest_Back.db`,
`${this.getUIContext().getHostContext()?.filesDir/RdbTest_Back.db.back`)
数据恢复则使用rdbStore.restore('RdbTest_Back.db.back')
。
- 如果需要将db文件保存至用户公共目录,还可以借助documentViewPicker保存文件,代码案例参考如下:
const documentSaveOptions = new picker.DocumentSaveOptions();
documentSaveOptions.newFileNames = ["RdbTest_back.db"];
documentSaveOptions.fileSuffixChoices = ['.db'];
let uris: Array<string> = [];
// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
const documentViewPicker = new picker.DocumentViewPicker(context);
documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
uris = documentSaveResult;
console.info('documentViewPicker.save to file succeed and uris are:' + uris);
}).catch((err: BusinessError) => {
console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
})
【总结】
rdbStore.backUp无法指定备份文件指定目录,可以通过fileIo.moveFile将生成的备份文件移动至其他沙箱目录,或者借助picker.DocumentViewPicker将备份文件保存至用户公共目录当中。
更多关于HarmonyOS 鸿蒙Next中rdb数据库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS NEXT的RDB数据库基于SQLite封装,提供本地关系型数据管理能力。支持事务操作、数据加密和跨设备同步。通过谓词查询实现高效数据检索,数据变化可通过订阅机制通知。RDB提供标准化数据操作接口,保障数据一致性和安全性。
在HarmonyOS Next中,RDB数据库备份支持通过指定路径的方式将数据备份到自定义文件夹。可以使用backup()
方法并传入目标文件夹的URI或路径参数实现。具体操作需结合ohos.data.relationalStore
API完成,确保应用具有相应的文件存储权限。