当前位置: 首页 > 面试题库 >

是否有可能在android中备份和还原数据库文件?非根设备

池宸
2023-03-14
问题内容

在我的应用程序中,我需要备份数据库,但是在我需要再次还原它之后,

我已经读过一些东西,但是我不确定是否有必要拥有根设备,我需要将所有数据备份/还原到非根设备中,这可能吗?

我的第一个想法是创建一个txt文件以写入选择内容,然后再将其插入。

但是我相信这是很多“问题”,然后我不知道是否有可能复制数据库并粘贴到sd卡中进行备份,以及从sd卡复制并粘贴到数据库路径中以用于非根设备还原。


问题答案:

这是一些使其工作的代码

private void importDB() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
                if (sd.canWrite()) {
                String currentDBPath = "//data//" + "<package name>"
                        + "//databases//" + "<database name>";
                String backupDBPath = "<backup db filename>"; // From SD directory.
                File backupDB = new File(data, currentDBPath);
                File currentDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(backupDB).getChannel();
            FileChannel dst = new FileOutputStream(currentDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Import Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Import Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}

private void exportDB() {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//" + "<package name>"
                    + "//databases//" + "<db name>";
            String backupDBPath = "<destination>";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Backup Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}


 类似资料:
  • 主要内容:备份数据,恢复数据,后台备份数据Redis SAVE 命令用于创建当前数据库的备份文件,文件名默认为 。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就可以通过相应的操作进行数据恢复。本节介绍 Redis 的数据备份和数据还原操作。 备份数据 SAVE 命令基本语法如下: 执行备份命令: 注意:命令执行后,将在 Redis 安装目录中自动创建 文件。如下图所示: 图1:Redis 备份文

  • 本文向大家介绍xtrabackup备份还原MySQL数据库,包括了xtrabackup备份还原MySQL数据库的使用技巧和注意事项,需要的朋友参考一下 mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况 Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些。 本文简

  • 我正在尝试备份/还原一个PostgreSQL数据库,正如Docker网站上解释的那样,但是数据没有还原。 数据库映像使用的卷为: CMD为: 然后创建tar存档: 现在,我删除用于db的容器并创建另一个同名容器,并尝试恢复之前插入的数据: 但表是空的,为什么数据没有正确还原?

  • 问题内容: 如何从Java代码备份mysql数据库,例如: 它的保存路径是动态分配的。 Path中的空格不会产生问题。 使用执行的jar文件生成路径。 DBname,DBusername或DBpass是动态分配的。 创建一个专用文件夹来保存备份文件。 问题答案: 注意:以下给出的代码是解决问题的一种方法,可能不是最佳方法。 代码中的所有内容都是可以更改的。如果环境变量中没有mysql,则在mysq

  • 问题内容: 是否可以将SQL Server 2008数据库的备份还原到SQL Server 2005实例上? 我需要处理在SQL Server 2008中为其数据库备份的示例应用程序。但是我将无法安装2008。那么是否有可能在2005年将其还原? 问题答案: 不能。无法从较新版本的备份中还原数据库。 如果您对此一无所知,我认为最好的选择是在SQL 2008的对象资源管理器中选择数据库,右键单击,选

  • 本文向大家介绍sql server 2005数据库备份还原图文教程,包括了sql server 2005数据库备份还原图文教程的使用技巧和注意事项,需要的朋友参考一下 首先、点击桌面的“SQL Server Management Studio”打开,sql2005的管理器,点击“连接”登录,如图: 一、新建数据库 1、新建数据库 右键点击“数据库”——“新建数据库”,如图: MSSQL2005备份