在我的应用程序内创建数据库备份

时间:2017-10-12 11:31:58

标签: android android-sqlite database-backups

我有一个类似于通讯录应用的应用,并使用SQLite存储数据。我希望无论何时更改数据库版本,都会在应用程序内部备份当前数据库,并且客户可以选择回退到先前版本。

在onUpgrade()方法中,如果我创建一个名称不同的新表,那么我无法复制旧版本的数据。

请提出一些实施此方法的好方法。我在互联网上搜索但无法找到。

1 个答案:

答案 0 :(得分:0)

简而言之,您只需将文件复制到所需位置,您也可能需要能够恢复数据库,这基本上是相反的。

这是我做的备份的核心代码示例: -

    String dbfilename = this.getDatabasePath(
            DBConstants.DATABASE_NAME).getPath();
    dbfile = new File(dbfilename);
    backupfilename = directory.getText().toString() +
            "/" +
            backupfullfilename.getText().toString();
    try {
                FileInputStream fis = new FileInputStream(dbfile);
                OutputStream backup = new FileOutputStream(backupfilename);

                //byte[] buffer = new byte[32768];
                int length;
                while((length = fis.read(buffer)) > 0) {
                    backup.write(buffer, 0, length);
                }
                backup.flush();
                backup.close();
                fis.close();
            }
            catch (IOException e) {
                //Error handling here.........
            }

backupfilename是存储备份的路径。