在我的应用程序内创建数据库备份
问题描述:
我有一个类似于联系人应用程序的应用程序,并使用SQLite存储数据。我希望每当数据库版本发生变化时,都会在应用程序内部进行当前数据库的备份,并且客户可以选择回退到以前的版本。在我的应用程序内创建数据库备份
在onUpgrade()方法中,如果我使用不同的名称创建一个新表,那么我无法从旧版本复制数据。
请提出一些很好的实现方法。我在互联网上搜索,但无法找到。
答
总之,您可以将文件复制到所需的位置,您也可能需要能够恢复数据库,这基本上是相反的。
这是一个应用程序的核心代码的一个例子我有,使一个备份: -
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是其中所述备份将被存储的路径。