2013-06-29 2 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); 
    } 

Я всегда поймать второе исключение.

Если я нажимаю правой кнопкой мыши на службе javadb в netbeans и выбираю connect, все работает плавно. [На самом деле, было бы хорошо, чтобы знать, какой код или программа Java работает в фоновом режиме, когда я выбираю, что]

В моем списке проектов под библиотекой я вижу derby.jar, derbyclient.jar и derbynet.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

Вы просто глотаете исключение! По крайней мере, напечатайте stacktrace, если вы не собираетесь обрабатывать или «утка». Как только вы получите стек и еще не знаете, что происходит, включите его в свой вопрос. – ikumen

+0

yep. как глупо меня.Question отредактировал –

ответ

7

По URL JDBC, это выглядит, как вы пытаетесь подключиться к серверу Derby против вложенного экземпляра. Если вы пытаетесь подключиться к экземпляру сервера, вот несколько соображений:

  • Вы запустили сервер самостоятельно, а mydb уже существует?
  • если нет, то Вы прошли в правильном Params создать (например, создание = истина) example: jdbc:derby://localhost:1527/dbname;create=true
  • если MYDB сделал существует, вы направляете сервера в нужное место?
    • также, в зависимости от того, что использовалось для запуска дерби (например, встроенного vs сетевого драйвера), местоположения базы данных по умолчанию также различны. Вы можете прочитать about it here

В основном исключение вы получаете то, что Дерби изречения не может найти свою базу данных - это в основном проблема пути.

+2

Да. Глупый глупый я! Я забыл включить полный путь, потому что забыл, что значение по умолчанию в окнах находится под C: /users/myUserName/.netbeans-derby/mydb –

2

Если вы используете netbeans, вы должны исправить это, перейдя в свойства соединения и добавив свойство. Под «свойством» типа «create» и под «value» type «true».