[英]Database not found error when connecting to Derby network server
I'm having problems initializing my javadb network server and setting a connection to it. 我在初始化我的javadb网络服务器并设置连接时遇到问题。 It's a JavaFX program.
这是一个JavaFX程序。
This is what I have so far: 这是我到目前为止:
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);
}
I always catch the second exception. 我总是抓住第二个例外。
If I right click on the javadb service in netbeans and choose connect, everything runs smoothly. 如果我右键单击netbeans中的javadb服务并选择connect,一切运行顺利。 [Actually it'd be nice to know what code or program java runs in the background when I select that]
[实际上,当我选择那个时,知道java在后台运行什么代码或程序会很好]
In my projects list under libraries I see derby.jar, derbyclient.jar and derbynet.jar 在库下的项目列表中,我看到了derby.jar,derbyclient.jar和derbynet.jar
What am I doing wrong? 我究竟做错了什么? Please help!
请帮忙!
Here's the error I get 这是我得到的错误
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)
By the JDBC url, it's looks like you're trying to connect to a Derby server vs. an embedded instance. 通过JDBC URL,看起来您正在尝试连接到Derby服务器而不是嵌入式实例。 If you are trying to connect to a server instance, here are some considerations:
如果您尝试连接到服务器实例,请注意以下事项:
example: jdbc:derby://localhost:1527/dbname;create=true
example: jdbc:derby://localhost:1527/dbname;create=true
Basically the exception you're getting is that Derby's saying it can't find your database - it's basically a path issue. 基本上你得到的例外是Derby说它无法找到你的数据库 - 它基本上是一个路径问题。
If you're using netbeans, you should fix this by going into the connection properties and adding a property. 如果您正在使用netbeans,则应通过进入连接属性并添加属性来解决此问题。 Under "property" type "create" and under "value" type "true".
在“property”下输入“create”,在“value”下输入“true”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.