我想将derby DB连接到Java应用程序。我已经下载了所有的jar,将类路径设置为java目录并下载了Derby。我现在得到的是:
java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.
任何人都可以帮助我:它实际意味着什么,我现在能做什么?我猜可能有一个Database_url变量有问题,但我不知道如何正确设置它。
private static final String protocol = "jdbc:derby:";
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
final String DATABASE_URL = "jdbc:derby://localhost:1527/myDB;create=true;user=user;password=pass";
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
System.out.println("Loaded the client driver.");
} catch (Exception err) {
System.err.println("Unable to load the client driver.");
err.printStackTrace(System.err);
System.exit(0);
}
String dbName = "BookDatabase";
Connection conn = null;
try {
System.out.println(
"Connecting to and creating the database...");
conn = DriverManager.getConnection(DATABASE_URL);
System.out.println("Database created.");
Statement s = (Statement) conn.createStatement();
s.execute("CREATE TABLE names" +
"(author varchar(50), author_id " +
"int, url varchar(80))");
System.out.println("Created 'names' table.");
System.out.println("Inserting authors.");
s.execute("INSERT INTO names " +
"VALUES ('Adams, Douglas', 1," +
"'http://www.douglasadams.com')");
s.execute("INSERT INTO names " +
"VALUES ('Simmons, Dan', 2, 'http://www.dansimmons.com')");
s.execute("INSERT INTO names " +
"VALUES ('Stephenson, Neal', 3, " +
"'http://www.nealstephenson.com')");
System.out.println("Authors inserted.");
conn.close();
} catch (SQLException err) {
System.err.println("SQL error.");
err.printStackTrace(System.err);
System.exit(0);
}
}
答案 0 :(得分:2)
鉴于您的错误(连接被拒绝:连接),似乎数据库服务器尚未启动。 Apache Derby有两种操作模式:客户端/服务器和嵌入式。每种模式使用不同的驱动程序(并具有不同的JDBC URL语法)。
ClientDriver
用于客户端/服务器模式(作为传统的RDMS),因此您需要将Derby DB Server作为不同的Java进程启动:
java -cp derby.jar;derbynet.jar;derbyclient.jar;derbytools.jar org.apache.derby.drda.NetworkServerControl start
(和java ... NetworkServerControl stop
以关闭数据库进程)。
另一种方法是在嵌入模式下启动数据库(数据库和客户端都在同一个JVM中运行,但其他进程不能同时连接到数据库)。
嵌入模式使用org.apache.derby.jdbc.EmbeddedDriver
,数据源URL的格式为jdbc:derby:firstdb;create=true
。
请参阅{{3>},<{3>}指南的活动3:使用嵌入式驱动程序运行JDBC程序中对此进行了解释。
请注意,在嵌入模式下,必须执行一些额外的步骤才能在退出JVM之前正确关闭数据库。