我正在尝试为独立的Java应用程序设置嵌入式Derby数据库,但在完成各种文档之后,我似乎无法找到任何简单的解释或示例。我正在使用带有Derby插件的Eclipse,并为我的项目启用了Derby特性。
我找到了一个在standalone address book中使用嵌入式Derby数据库的示例,以及在Eclipse中使用Derby的概述(这似乎不包括嵌入式部署),但我仍然觉得我喜欢我缺少一些基本的东西。
这是我第一次尝试使用Java数据库,我有点困惑,所以这是我的基本问题:
代码片段非常有用!
答案 0 :(得分:2)
我建议您使用一个名为ConnectionDerby的类,其中将所有逻辑和参数放入选择,插入,更新,删除,并且作为嵌入式数据库,如果数据库已经存在,我会复制,如果不存在我创建的话,我希望这段代码可以帮助你,抱歉或者我的英语,我是新手在java中使用这个数据库,但我希望这有助于你理解....
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class ConnectionDerby {
private Connection conn = null;
private Statement sttm = null;
public Connection CrearBD(String query) {
try {
//Obtenemos el Driver de Derby
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db;create=true");
if (conn != null) {
//JOptionPane.showMessageDialog(null, "Base de Datos Lista");
try {
PreparedStatement pstm = conn.prepareStatement(query);
pstm.execute();
pstm.close();
//JOptionPane.showMessageDialog(null, "Base de Datos Creada Correctamente");
System.out.println("SENTENCIA SQL EFECTUADA CORRECTAMENTE");
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(null, ex.getLocalizedMessage());
System.out.println(ex.getMessage());
JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
//JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL");
}
}
} catch (SQLException e) {
System.out.println(e.getMessage());
JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
//JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN EJECUTAR LAS SENTENCIAS SQL parte 2");
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
//JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN EJECUTAR LAS SENTENCIAS SQL parte 3");
}
return conn;
}
public Connection AccederBD() {
try {
//Obtenemos el Driver de Derby
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
//Obtenemos la Conexión
conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
if (conn != null) {
System.out.println("Base de Datos Ya Leida Correctamente");
//JOptionPane.showMessageDialog(null, "Base de Datos Ya Leida Correctamente");
}
} catch (SQLException e) {
System.out.println(e.getMessage());
System.out.println("Sistema Creado por Mario José Echeverría");
System.out.println("NO SE ENCONTRO LA BASE DE DATOS");
System.out.println("CREANDO BASE DE DATOS EN DERBY DATABASE");
String createTableProyecto = "Sentence to create first table";
String createTablePrimer = "Sentence to create second table";
String createTableTopCoat = "Sentence to create third table";
String createTableCotizacion = "Sentence to create fourth table";
CrearBD(createTableProyecto);
CrearBD(createTablePrimer);
CrearBD(createTableTopCoat);
CrearBD(createTableCotizacion);
//*************PRUEBAS*****************
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
System.out.println("ERROR DE TIPO ClassNotFoundException");
//JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN ACCEDER A LA BASE DE DATOS parte 2");
}
return conn;
}
public void UID(String sqlcad) {
try {
//Obtenemos el Driver de Derby
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
sttm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sttm.executeUpdate(sqlcad);
System.out.println("Conexión Exitosa a la Base de Datos");
//JOptionPane.showMessageDialog(null, "Conexión exitosa");
sttm.close();
conn.close();
if (conn != null) {
System.out.println("Consulta Realizada Correctamente");
//JOptionPane.showMessageDialog(null, "Base de Datos Ya Leida Correctamente");
}
} catch (SQLException e) {
System.out.println("Error= " + e.getMessage());
} catch (ClassNotFoundException e) {
System.out.println("Error= " + e.getMessage());
}
}
public ResultSet getvalores(String sqlcad) {
ResultSet rs = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
sttm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
//String sqlcad = "Select nombre, m2xgal, pregal, precub, descripcion from primer";
rs = sttm.executeQuery(sqlcad);
return rs;
} catch (Exception e) {
System.out.println("Error= " + e.getMessage());
return rs;
}
}
}
答案 1 :(得分:2)
要在嵌入式模式下使用Java中的Derby,我们需要执行以下步骤:
org.apache.derby.jdbc.EmbeddedDriver
驱动程序
derbyclient
Maven依赖jdbc:derby:dbname
System.setProperty("derby.system.home", "/home/janbodnar/.derby");
DriverManager.getConnection("jdbc:derby:;shutdown=true");
我可以在Java JDBC Derby programming tutorial找到完整的工作示例。
答案 2 :(得分:1)
如果您可以切换到netbeans IDE这里有两个有用的教程,我可以在ide中工作(我的安装程序有一些小问题)。它使用JPA,这是一种简化了大量数据库交互的抽象。
https://blogs.oracle.com/geertjan/entry/embedded_database_for_netbeans_platform
http://platform.netbeans.org/tutorials/nbm-crud.html
解决您的一些疑问:
希望这有帮助并祝你好运!
答案 3 :(得分:0)
那些博客n url非常精彩,但我建议OP切换到NetBeans,即使我使用了d ClientDriver
版本的Java Derby驱动程序,我创建了一个类或方法来启动数据库自动启动准备工作,以便我在运行时不会遇到任何SQLException
并且它一直在工作。虽然我确实使用NetworkServerControl
类在运行时启动我的数据库,如diz
NetworkServerControl server=new NetworkServerControl(InetAddress.getLocalHost(),1527);
server.start (null);
//Class.forName n DriverManager.getConnection() declarations goes here.
答案 4 :(得分:0)
我从未做过德比(虽然曾经做过一次mysql)并且从this simple example开始。实际上我甚至没有读过这个话题 - 我只是滚动到中间,其中有一个不言自明的例子。