2017-10-08 73 views
0

我是新來的android工作室,我試圖從我的應用程序做我的數據庫的備份。我可以從數據/數據/數據庫中提取database.db,但是當我清除數據並嘗試將數據庫的副本導入到數據/數據/數據庫時,什麼都不會發生。你能替換android數據庫嗎?

問題是你不能修改數據/數據/數據庫嗎?

+0

要恢復的備份應用程序 –

+0

是的,我希望在備份 – Kurusu

回答

0

這裏是備份的代碼和恢復數據庫

private void importDB() { 
     try { 
      File sd = Environment.getExternalStorageDirectory(); 
      File data = Environment.getDataDirectory(); 
       if (sd.canWrite()) { 
       String currentDBPath = "//data//" + "<package name>" 
         + "//databases//" + "<database name>"; 
       String backupDBPath = "<backup db filename>"; 
       File backupDB = new File(data, currentDBPath); 
       File currentDB = new File(sd, backupDBPath); 

      FileChannel src = new FileInputStream(backupDB).getChannel(); 
      FileChannel dst = new FileOutputStream(currentDB).getChannel(); 
      dst.transferFrom(src, 0, src.size()); 
      src.close(); 
      dst.close(); 
      Toast.makeText(getApplicationContext(), "Import Successful!", 
        Toast.LENGTH_SHORT).show(); 

     } 
    } catch (Exception e) { 

     Toast.makeText(getApplicationContext(), "Import Failed", Toast.LENGTH_SHORT) 
       .show(); 

    } 
} 

private void exportDB() { 
    try { 
     File sd = Environment.getExternalStorageDirectory(); 
     File data = Environment.getDataDirectory(); 

     if (sd.canWrite()) { 
      String currentDBPath = "//data//" + "<package name>" 
        + "//databases//" + "<db name>"; 
      String backupDBPath = "<destination>"; 
      File currentDB = new File(data, currentDBPath); 
      File backupDB = new File(sd, backupDBPath); 

      FileChannel src = new FileInputStream(currentDB).getChannel(); 
      FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
      dst.transferFrom(src, 0, src.size()); 
      src.close(); 
      dst.close(); 
      Toast.makeText(getApplicationContext(), "Backup Successful!", 
        Toast.LENGTH_SHORT).show(); 

     } 
    } catch (Exception e) { 

     Toast.makeText(getApplicationContext(), "Backup Failed", Toast.LENGTH_SHORT) 
       .show(); 

    } 
} 
+0

感謝的人複製回數據/數據/數據庫,它的工作但我必須在importDB()中將當前的DBPath替換爲backupDBPath,反之亦然。 – Kurusu