2013-04-01 63 views
0

我是derby數據庫的新手,我正在嘗試 使用Apache教程中的代碼恢復derby數據庫的備份 。 但是它給出了一個錯誤,沒有找到合適的德比驅動程序, 隨時運行代碼。下面恢復java derby數據庫備份

是代碼片段:

public void restoreDatabase() 

    { 
    try { 
      String dbURL = "jdbc:derby:/localhost:1527/NSS_DB;restoreFrom=" 
        + "c:/mybackups/2013-03-31/NSS_DB"; 
     Connection conn = DriverManager.getConnection(dbURL); 
      conn.close(); 
    System.out.println("restore wassuccessful "); 
     } catch (SQLException ex) { 
      Logger.getLogger(MyJFrame.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

修改代碼後,我沒有得到任何錯誤,但較長的備份沒有得到恢復。下面是對上述代碼的修改。這是第二個代碼片段。

public void restoreDatabase() throws ClassNotFoundException 
    { 
    try { 
      String dbURL = "jdbc:derby://localhost:1527/NSS_DB;restoreFrom=" 
        + "c:/mybackups/2013-03-31/NSS_DB"; 
     Connection conn = null; 
     Properties props = new Properties(); 
     props.put("user", uName); 
     props.put("password", uPass); 
     conn = DriverManager.getConnection(dbURL, props);   
     conn.commit(); 
     } catch (SQLException ex) { 
      Logger.getLogger(MyJFrame.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

唯一的補充,我想是使用java.util.Properties對象。

從NetBeans控制檯此錯誤消息是由FRST代碼生成網頁摘要

Apr 01, 2013 8:39:25 PM my.gnssregsitry.DBSearch restoreDatabase 
SEVERE: null 
java.sql.SQLException: No suitable driver found for jdbc:derby:/localhost:1527/NSS_DB;restoreFrom=c:/mybackups/2013-03-31/NSS_DB 
    at java.sql.DriverManager.getConnection(DriverManager.java:604) 
    at java.sql.DriverManager.getConnection(DriverManager.java:243) 
    at my.gnssregsitry.DBSearch.restoreDatabase(DBSearch.java:242) 
    at my.gnssregsitry.MyJFrame.jButton2ActionPerformed(MyJFrame.java:929) 
    at my.gnssregsitry.MyJFrame.access$1900(MyJFrame.java:41) 
    at my.gnssregsitry.MyJFrame$20.actionPerformed(MyJFrame.java:591) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2719) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:682) 
    at java.awt.EventQueue$3.run(EventQueue.java:680) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:696) 
    at java.awt.EventQueue$4.run(EventQueue.java:694) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 

看起來有更多的工作要做的是,代碼正在執行 任何siggestions

回答

0

無適宜─驅動程序問題意味着:(a)您必須將derbyclient.jar放入您的類路徑中,並且(b)您可能必須調用Class.forName(「org.apache.derby.jdbc.ClientDriver」);

另外,在「localhost」前應該有兩個斜線;它應該是「jdbc:derby:// localhost:1527/NSS_DB; restoreFrom = ...」等。

+0

做出修改後,代碼不會再次拋出任何異常,但備份數據庫不會恢復。我已將新代碼添加到問題中。 – CodeAngel

+0

是什麼讓你認爲數據庫沒有得到恢復? –

+0

因爲在備份數據庫後,我刪除了某些字段,並且在還原數據庫時,從備份時間開始我沒有獲取數據庫的副本。相反,我仍然在數據庫中存在「損壞」的數據。 – CodeAngel