带表条目的数据库备份。

时间:2012-06-07 16:02:32

标签: android sqlite

我想备份一个数据库,我是谷歌并找到了似乎有效的代码,但是它会备份数据库结构而不是数据库中的条目。

没有报告错误,还有如何以CSV格式导出表格?

备份数据库的代码:

public void BackupDB() {
 InputStream myInput;

    try {

        myInput = new FileInputStream("/data/data/com.cecchina.mathew.lessonsDB/databases/Teaching");
        // Set the output folder on the SDcard
        File directory = new File("/mnt/sdcard/external_sd/TeachingBKup/");
        // Create the folder if it doesn't exist:
        if (!directory.exists()) 
        {
            directory.mkdirs();
        } 
        // Set the output file stream up:

        OutputStream myOutput = new FileOutputStream(directory.getPath()+ "/Teaching.backup");
        // Transfer bytes from the input file to the output file
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0)
        {
            myOutput.write(buffer, 0, length);
        }
        // Close and clear the streams
        myOutput.flush();

        myOutput.close();

        myInput.close();

    } catch (FileNotFoundException e) {
Toast.makeText(ourContext, "Backup Unsuccesfull file not found error!",          Toast.LENGTH_LONG).show();
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
Toast.makeText(ourContext, "Backup Unsuccesfull IO error!", Toast.LENGTH_LONG).show();
// TODO Auto-generated catch block
        e.printStackTrace();
    }
Toast.makeText(ourContext, "DataBase structure backed up!", Toast.LENGTH_LONG).show();

} 

建议我缺少的地方?

1 个答案:

答案 0 :(得分:0)

如果在插入任何数据之前创建备份,当然所有的结构都是结构(如你所说)。

您的代码会复制一个完整的文件,因此如果数据库中有数据,则会将其复制到卡中。

我使用几乎相同的代码(从菜单项启动)在我的几个应用程序中执行备份。我还有恢复/导入的代码,当我完成所有数据的时候。