我在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数据库?
答案 0 :(得分:1)
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
答案 1 :(得分:1)
您正在寻找嵌入模式中的编程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);
}
}
}
}
要获得完整的教程,请查看我的Programming Derby with JDBC教程。