当前位置:网站首页 > 数据科学与大数据 > 正文

db3数据库打开(db3 数据库)



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 数据库)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • bt1120数据协议(bt1120接口定义)2025-10-25 14:45:04
  • 自动驾驶汽车数据采集(自动驾驶汽车数据采集担忧)2025-10-25 14:45:04
  • st7735s中文数据手册 pdf(st7796s中文手册)2025-10-25 14:45:04
  • 学术精品数据库(国内专业学术数据库)2025-10-25 14:45:04
  • goldendb数据库官网(goldengate支持几种数据库)2025-10-25 14:45:04
  • mongodb数据库登录命令(mongodb 登录命令)2025-10-25 14:45:04
  • dbeaver连接达梦数据库(dbeaver连接达梦数据库时不显示表)2025-10-25 14:45:04
  • 自动驾驶数据安全与法律保护问题研究(自动驾驶数据安全与法律保护问题研究报告)2025-10-25 14:45:04
  • Pymysql无法连接mysql服务的原因(pymysql 连接数据库)2025-10-25 14:45:04
  • 自动驾驶图片数据标注规范要求(自动驾驶图片数据标注规范要求有哪些)2025-10-25 14:45:04
  • 全屏图片