1.数据库在沙箱内位置
沙箱文件目录 官方文档说明
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/file-management/app-sandbox-directory.md
获取数据库路径:
let 数据库路径='/data/storage/el2/database/entry/rdb/Mydata.db'
2.数据库临时文件
找到了数据库db文件,只导出这个db文件是没有用的。因为还有db-wal这个临时文件。系统并没有把数据全部写入db,甚至重启手机也不行。
3.备份数据库
ArkTs提供了关系数据库的备份功能,能够将所有数据备份到备份数据库中,这样就可以曲线救国了。
/*
* 数据库备份
*/
备份(){
this.数据库.backup('备份Mydata.db')
}
/*
* 数据库恢复
*/
恢复(){
this.数据库.restore('备份Mydata.db')
}
4.导出沙箱文件到用户文件夹
import RDB from 'https://www.bilibili.com/RDB' //自己编写的数据库模块
import picker from '@ohos.file.picker'; //用于打开文件选择器
import fs from '@ohos.file.fs'; //文件拷贝用
@Entry
@Component
struct 获取文件{
async 导出(){
RDB.备份() //先进行备份获得全部数据,文件名固定为'备份Mydata.db'
try {
let 数据库文件='/data/storage/el2/database/entry/rdb/备份Mydata.db'
//用文件选择器选择用户区目录和文件名进行保存
let 文件保存选项= new picker.DocumentSaveOptions();
//写好默认的文件名,如果存在同名文件,系统拷贝时会自动重命名
文件保存选项.newFileNames = ['备份Mydata.db'];
let 文件选择器= new picker.DocumentViewPicker();
文件选择器.save(文件保存选项).then((保存文件结果: Array
let 目标uri=保存文件结果[0]
let 目标文件=fs.openSync(目标uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.copyFile(数据库文件,目标文件.fd,).then(()=>{
//拷贝成功后关闭文件
fs.closeSync(目标文件.fd)
}).catch((err)=>{
console.error('xxx','拷贝文件失败: ' , err.message , err.code)
})
}).catch((err) => {
console.error('xxx','DocumentViewPicker.save错误: ' + JSON.stringify(err));
});
} catch (error) {
let err = error;
console.error('xxx','DocumentViewPicker错误: ' + JSON.stringify(err));
}
}
}
5.导入数据库
async 导入(){
try {
//不管从文件选择器中选择的文件名是什么,拷贝过来都固定为'备份Mydata.db'
let 目标文件='/data/storage/el2/database/entry/rdb/备份Mydata.db'
let 文件打开选项 = new picker.DocumentSelectOptions()
let 文件选择器 = new picker.DocumentViewPicker();
文件选择器.select(文件打开选项).then((选择文件: Array
let 来源uri=选择文件[0]
let 来源文件=fs.openSync(来源uri, fs.OpenMode.READ_ONLY)
fs.copyFile(来源文件.fd,目标文件).then(()=>{
fs.closeSync(来源文件.fd)
//从导入的文件'备份Mydata.db'恢复到数据库文件Mydata.db
RDB.恢复()
}).catch((err)=>{
console.error('xxx','导入文件失败: ' + err.message + ', error code: ' + err.code)
})
}).catch((err) => {
console.error('xxx','DocumentViewPicker.select错误: ' + JSON.stringify(err));
});
} catch (error) {
let err = error;
console.error('xxx','DocumentViewPicker错误: ' + JSON.stringify(err));
}
}
到此这篇db3数据库打开(db3 数据库)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/15133.html