我有一个类似于通讯录应用的应用,并使用SQLite存储数据。我希望无论何时更改数据库版本,都会在应用程序内部备份当前数据库,并且客户可以选择回退到先前版本。
在onUpgrade()方法中,如果我创建一个名称不同的新表,那么我无法复制旧版本的数据。
请提出一些实施此方法的好方法。我在互联网上搜索但无法找到。
答案 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是存储备份的路径。