2013-06-29 56 views
4

我在初始化我的javadb網絡服務器並設置連接時遇到問題。這是一個JavaFX程序。連接到Derby網絡服務器時未找到數據庫錯誤

這是我到目前爲止有:

try { 
     Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
     javadbserver = new NetworkServerControl(); 
     javadbserver.start(null); 
    } catch (ClassNotFoundException e) { 
     Logger.getLogger(MainGuiController.class.getName()).log(Level.SEVERE, null, ex); 
     System.out.println("Where is your JavaDB embedded Driver?"); 
     return; 
    } 

    String dbName = "mydb"; 
    String dbUser = "auser"; 
    String dbPass = "password"; 

    PreparedStatement prepstmt; 

    try { 
     this.conn = DriverManager.getConnection("jdbc:derby://localhost:1527/mydb;user=auser;password=password"); 
     System.out.println("Went through!"); 
    } catch (SQLException ex) { 
     Logger.getLogger(MainGuiController.class.getName()).log(Level.SEVERE, null, ex); 
    } 

我總是趕在第二個例外。

如果我右鍵單擊netbeans中的javadb服務並選擇連接,則一切運行順利。 [其實這會是不錯的知道什麼樣的代碼或程序的Java在後臺運行,當我選擇]

在我的項目列表下的圖書館我看到的derby.jar,derbyclient.jar中和d​​erbynet.jar

我究竟做錯了什麼?請幫忙!

這裏的錯誤,我得到

java.sql.SQLNonTransientConnectionException: The connection was refused because the database mydb was not found. 
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) 
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
    at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source) 
    at java.sql.DriverManager.getConnection(DriverManager.java:579) 
    at java.sql.DriverManager.getConnection(DriverManager.java:243) 
    at mydb.MainGuiController.initialize(MainGuiController.java:105) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2152) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028) 
    at mydb.mydb.start(mydb.java:37) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: org.apache.derby.client.am.DisconnectException: The connection was refused because the database mydb was not found. 
    at org.apache.derby.client.net.NetConnectionReply.parseRDBNFNRM(Unknown Source) 
    at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(Unknown Source) 
    at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(Unknown Source) 
    at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(Unknown Source) 
    at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(Unknown Source) 
    at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(Unknown Source) 
    at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(Unknown Source) 
    at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source) 
    at org.apache.derby.client.net.NetConnection.<init>(Unknown Source) 
    at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source) 
    at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source) 
+0

你只是在吞嚥異常!至少打印一個堆棧跟蹤如果你不打算處理或「鴨子」它。一旦你得到堆棧跟蹤,但仍然不確定發生了什麼,請將其包含在你的問題中。 – ikumen

+0

是的。我有多愚蠢。問題編輯 –

回答

7

通過JDBC的URL,它看起來像你試圖連接到Derby服務器與嵌入式實例。如果您嘗試連接到服務器實例,請注意以下事項:

  • 您是否自己啓動服務器,mydb是否已存在?
  • 如果不是,你在正確的PARAMS通過創建(例如,創建= TRUE) example: jdbc:derby://localhost:1527/dbname;create=true
  • 如果MYDB確實存在,你在指服務器到正確的位置?
    • 也取決於用於啓動德比的內容(例如嵌入式VS網絡驅動程序),默認數據庫位置也不同。您可以閱讀about it here

基本上你得到的例外是,德比的說,它不能找到你的數據庫 - 它基本上是一個路徑問題。

+2

是的。愚蠢的我!我忘了包含完整路徑,因爲我忘記了Windows中的默認位置在C:/users/myUserName/.netbeans-derby/mydb –

2

如果您使用netbeans,您應該通過進入連接屬性並添加一個屬性來解決這個問題。在「屬性」下輸入「create」,在「value」下輸入「true」。

相關問題