[英]Netbeans: How to start a Derby Database programmatically
我在Netbeans中开发了一个Java项目。 现在,我的问题是,只有首先启动指定的数据库,以下代码才可执行:
private boolean DriverIsLoaded()
{
try
{
Class.forName("org.apache.derby.jdbc.ClientDriver");
return true;
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
return false;
}
}
private boolean openConnectionAndCheck()
{
try
{
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/myDatabase;create=true", "Administrator", "Administrator");
return true;
}
catch(SQLException e)
{
e.printStackTrace();
return false;
}
}
我已经在Netbeans内部创建了数据库。 我的问题是,如何以编程方式启动jdbc数据库?
Derby客户端-服务器配置(即,使用Derby ClientDriver并指定jdbc:derby://host:port/path/to/database
形式的JDBC连接URL)的全部要点是,客户端和服务器均已操作独立地,通常在不同的计算机上,并且通常有多个客户端,但是只有一个服务器。
也就是说,客户机将“以编程方式启动jdbc数据库”的想法不是这种配置的预期行为。 客户端和服务器甚至不在同一台计算机上!
也许您想要的是Derby“嵌入式”配置。
在此处阅读有关Derby部署配置类型的更多信息: http : //db.apache.org/derby/docs/10.14/getstart/cgstutorialintro.html
也许您真正想要的是有关如何部署,配置和操作Derby Network Server的信息,其信息从此处开始: http : //db.apache.org/derby/docs/10.14/adminguide/index.html
您正在寻找以嵌入式模式编写Derby的程序。 这是一个代码片段:
package com.zetcode;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class CreateCars {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
String url = "jdbc:derby:testdb;user=USER12";
try {
System.setProperty("derby.system.home", "/home/janbodnar/.derby");
con = DriverManager.getConnection(url);
st = con.createStatement();
st.executeUpdate("CREATE TABLE CARS(ID INT PRIMARY KEY,"
+ "NAME VARCHAR(30), PRICE INT)");
st.executeUpdate("INSERT INTO CARS VALUES(1, 'Audi', 52642)");
st.executeUpdate("INSERT INTO CARS VALUES(2, 'Mercedes', 57127)");
st.executeUpdate("INSERT INTO CARS VALUES(3, 'Skoda', 9000)");
st.executeUpdate("INSERT INTO CARS VALUES(4, 'Volvo', 29000)");
st.executeUpdate("INSERT INTO CARS VALUES(5, 'Bentley', 350000)");
st.executeUpdate("INSERT INTO CARS VALUES(6, 'Citroen', 21000)");
st.executeUpdate("INSERT INTO CARS VALUES(7, 'Hummer', 41400)");
st.executeUpdate("INSERT INTO CARS VALUES(8, 'Volkswagen', 21600)");
DriverManager.getConnection("jdbc:derby:;shutdown=true");
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(CreateCars.class.getName());
if (((ex.getErrorCode() == 50000)
&& ("XJ015".equals(ex.getSQLState())))) {
lgr.log(Level.INFO, "Derby shut down normally", ex);
} else {
lgr.log(Level.SEVERE, ex.getMessage(), ex);
}
} finally {
try {
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(CreateCars.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
}
}
有关完整的教程,请查看我的《 带JDBC编程Derby》 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.