2017-04-07 39 views
0

我正在嘗試爲實踐設置遠程Derby數據庫。下面的代碼工作沒有問題,每當我訪問我的硬盤的DB:設置遠程Derby數據庫:「找不到合適的驅動程序」錯誤

class Test{ 
    public static void main(String[] args) { 
     String protocol = "jdbc:derby:"; 
//  String dbPath = "C:/Java_Practice/derbyDB"; // this dbPath works... 
     String dbPath = "//108.167.141.127/derbyDB";  // and this one doesn't 
     String url = protocol + dbPath; 
     try(Connection conn = DriverManager.getConnection(url)) 
     { 
      System.out.println(conn); 
     } 
     catch(SQLException e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

我再上傳整個derbyDB目錄到我的HostGator的託管網站,通過ping服務器獲取它的IP,並相應修改了DBPATH VAR 。代碼停止工作,就好像它甚至無法看到數據庫。我錯過了什麼?

+1

「沒有找到合適的驅動程序」指的是德比類是不是在你的CLASSPATH。這裏有一些文檔:http://db.apache.org/derby/docs/10.13/getstart/tgs26250.html –

+0

@Bryan Pendleton事情是,當我訪問位於我的硬盤上的數據庫時,連接正常工作,這意味着CLASSPATH變量設置正確。不起作用的是與我上傳到我的網站的同一個數據庫副本的連接。我懷疑dbPath var有什麼問題,因爲用'xyz'等任意名稱替換'derbyDB'會生成相同的SQLException ... –

+0

如果數據庫位於另一臺機器上,則必須在該機器上運行Derby Network Server爲該機器提供客戶端服務器請求。嘗試通過我在之前的評論中鏈接到的教程工作。 –

回答

0

一些挖後回答我的問題。

這是我正式的Apache Derby文檔(https://db.apache.org/derby/docs/10.0/manuals/develop/develop14.html)發現地:

您可以僅指定本地上 的JVM運行的計算機數據庫。

看起來像什麼,我想做到不能做......

+0

Derby 10.0手動設置已超過10年;嘗試閱讀當前的文檔。在你放棄並斷定它「無法完成」之前,也許你可以試着準確地表達你想要完成的事情。首先,Derby支持嵌入式和客戶端 - 服務器配置。你試圖使用哪一個? –

+0

@ Bryan Pendleton謝謝Bryan,我非常感謝你的幫助。我想要完成的只是爲了即將開始的OCP考試做準備,讓他有更多的模擬真實世界的實踐練習,僅此而已。我使用的OCP準備指南始終指的是德比,所以選擇很自然。看到它不能一蹴而就,我轉而使用MySQL;一切正在如現在應該的那樣工作。至於文件...老實說,我不知道它是*那*舊(頁面上的時間戳說'上次發佈:01/24/2013'...下次會更小心。 –

+0

不用擔心很高興你能夠完成你的準備工作,如果你想在未來的某個時候再次嘗試德比,我希望你能夠做到。 –

1

看起來像你的驅動程序類未加載。 嘗試在調用DriverManager.getConnection之前加載它,並查看它是否有效。

String driver = "org.apache.derby.jdbc.ClientDriver"; 
Class.forName(driver).newInstance(); 
String protocol = "jdbc:derby:"; 
String dbPath = "//108.167.141.127/derbyDB"+";create=true"; 
String url = protocol + dbPath; 
Connection conn = DriverManager.getConnection(url); 
+0

從Java 6(JDBC 4)開始,在普通Java應用程序中顯式驅動程序加載並不是必需的,假定驅動程序符合JDBC 4並且在初始應用程序類路徑上。 –

+0

是的,這是正確的。我的數據庫的驅動程序*是* JDBC 4兼容。數據庫本身是完全可訪問的,可遍歷的和可更新的 - 但只有當它存在於我的系統中時纔是如此。當它很遙遠 - 不行。 –

相關問題