2017-10-12 64 views
-5

我有一个类似于联系人应用程序的应用程序,并使用SQLite存储数据。我希望每当数据库版本发生变化时,都会在应用程序内部进行当前数据库的备份,并且客户可以选择回退到以前的版本。在我的应用程序内创建数据库备份

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

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

回答

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是其中所述备份将被存储的路径。

相关问题