2014-02-05 78 views
0

我試圖通過Java恢復Apache Derby數據庫。在研究中,我發現了以下頁面http://db.apache.org/derby/docs/10.3/adminguide/tadminhubbkup44.html。據我所知,我必須有一個連接到服務器的連接,並使用給定的URL來進行恢復。通過Java恢復Derby數據庫

我不確定如何使用此URL在Java中重新啓動和恢復正在運行的服務器。

+0

什麼都沒有你確定?你似乎已經找到了文檔,而且你似乎明白他們說的是什麼。剩下的唯一事情就是編寫一個Java JDBC程序,它使用適當的URL調用DriverManager.getConnection()。當然,確保使用測試數據庫測試您的程序。 –

回答

0

我已設法使用創建的備份文件恢復derby數據庫。問題是我需要在嘗試恢復數據庫之前關閉數據庫。

但現在我遇到了另一個問題。數據庫關閉和以下恢復後,數據庫不會自動啓動。我試圖註冊一個新的驅動程序或將shutdown屬性設置爲false,但沒有一個能夠通過Java重新啓動數據庫。

這是我到目前爲止的代碼:

public boolean restore() throws DataSourceException { 
    String databaseName = "jdbc:derby://localhost:1527/sun-appserv-samples;restoreFrom="+ getRestorePath() +"sun-appserv-samples"; 
    String delete = "jdbc:derby://localhost:1527/sun-appserv-samples;shutdown=true"; 
    try { 
    DriverManager.getConnection(delete); 
    } catch (SQLException e) { 
    Connection con; 
    try { 
    con = DriverManager.getConnection(databaseName); 
    con.commit(); 
    try {     
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
    } catch (ClassNotFoundException e1) { 
    } catch (InstantiationException e1) { 
    } catch (IllegalAccessException e1) { 
    } 

    con = DriverManager.getConnection("jdbc:derby://localhost:1527/sun-appserv-samples;create=true"); 
    con.commit(); 
    return true; 
    } catch (SQLException e1) { 
    } 
    } 
    return false; 
}