2017-10-12 86 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是其中所述備份將被存儲的路徑。

相關問題