我想备份一个数据库,我是谷歌并找到了似乎有效的代码,但是它会备份数据库结构而不是数据库中的条目。
没有报告错误,还有如何以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();
}
建议我缺少的地方?
答案 0 :(得分:0)
如果在插入任何数据之前创建备份,当然所有的结构都是结构(如你所说)。
您的代码会复制一个完整的文件,因此如果数据库中有数据,则会将其复制到卡中。
我使用几乎相同的代码(从菜单项启动)在我的几个应用程序中执行备份。我还有恢复/导入的代码,当我完成所有数据的时候。