library instalar for example java jdbc derby javadb

java - instalar - Iniciando Derby programáticamente



java derby jdbc driver download (1)

Por favor, eche un vistazo al siguiente código

DataBaseConnector.java

import java.sql.*; import javax.swing.*; public class DataBaseConnector { private Connection con; public DataBaseConnector() { } private boolean createConnection() { try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); con = DriverManager.getConnection("jdbc:derby://localhost:1527/contact;create=true","yohanrw","knight"); } catch(Exception e) { System.out.println("Error getConnection"); e.printStackTrace(); JOptionPane.showMessageDialog(null,e.getLocalizedMessage()); return false; } return true; } private void closeConnection() { try { con.close(); } catch(Exception e) { JOptionPane.showMessageDialog(null,e.getLocalizedMessage()); } } public void insertData(int id, String firstName, String lastName) { createConnection(); try { PreparedStatement ps = con.prepareStatement("insert into APP.FRIENDS values(?,?,?)"); ps.setInt(1, id); ps.setString(2, firstName); ps.setString(3, lastName); int result = ps.executeUpdate(); if(result>0) { JOptionPane.showMessageDialog(null,"Data Inserted"); } else { JOptionPane.showMessageDialog(null,"Something Happened"); } } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null,e.getLocalizedMessage()); } finally { closeConnection(); } } public void viewData() { createConnection(); try { Statement st = con.createStatement(); ResultSet rs = st.executeQuery("select * from APP.FRIENDS"); StringBuffer sb = new StringBuffer(""); while(rs.next()) { sb.append(rs.getInt(1)+"/n"); sb.append(rs.getString(2)+"/n"); sb.append(rs.getString(3)+"/n"); } JOptionPane.showMessageDialog(null,sb); } catch(Exception e) { } } }

UI de base de datos

import java.awt.event.*; import javax.swing.*; import java.awt.*; public class DatabaseUI extends JFrame { private JLabel firstName, id, lastName; private JTextField idTxt, firstNameTxt, lastNameTxt; private JButton ok, view; public DatabaseUI() { firstName = new JLabel("First Name: "); lastName = new JLabel("Last Name: "); id = new JLabel("ID: "); firstNameTxt = new JTextField(10); lastNameTxt = new JTextField(10); idTxt = new JTextField(10); ok = new JButton("ADD"); ok.addActionListener(new OKAction()); view = new JButton("View"); view.addActionListener(new ViewAction()); JPanel centerPanel = new JPanel(); centerPanel.setLayout(new GridLayout(4,2)); centerPanel.add(id); centerPanel.add(idTxt); centerPanel.add(firstName); centerPanel.add(firstNameTxt); centerPanel.add(lastName); centerPanel.add(lastNameTxt); centerPanel.add(view); centerPanel.add(ok); getContentPane().add(centerPanel,"Center"); this.pack(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class OKAction implements ActionListener { public void actionPerformed(ActionEvent ae) { DataBaseConnector db = new DataBaseConnector(); int id = Integer.parseInt(idTxt.getText()); db.insertData(id, firstNameTxt.getText().trim(), lastNameTxt.getText().trim()); } } private class ViewAction implements ActionListener { public void actionPerformed(ActionEvent ae) { DataBaseConnector db = new DataBaseConnector(); db.viewData(); } } public static void main(String[]args) { new DatabaseUI(); } }

En este caso, necesito iniciar el derby manualmente (estoy usando NetBeans) haciendo clic derecho en el nodo de la base de datos> iniciar el servidor . Esta es una base de datos incrustada, lo que significa que estoy llevando esto de una máquina a otra y estoy dispuesto a comenzar simplemente haciendo doble clic en el archivo jar, sin configurar la base de datos en todas y cada una de las máquinas e iniciarlas manualmente. Pero, si no inicié la base de datos manualmente, aparece un error

java.sql.SQLNonTransientConnectionException: java.net.ConnectException: Error al conectarse al servidor localhost en el puerto 1527 con el mensaje Conexión rechazada: connect.

No importa incluso dentro de NetBeans, si no lo inicié manualmente, aparece el error. ¿Cómo puedo iniciar el Derby dentro de mi programa, sin iniciarlo manualmente? He intentado de varias maneras como el parámetro " create=true ", NetworkServer.start (), pero no es bueno. Sin embargo, no estoy seguro de si lo hice correctamente.


Esta es una base de datos integrada, lo que significa que estoy tomando esto de una máquina a otra y estoy dispuesto a comenzar simplemente haciendo doble clic en el archivo jar.

En el caso de derby, una base de datos incrustada significa que la base de datos se ejecuta en la JVM y escribe en el sistema de archivos. Lo que implica que puede mover el archivo jar como desee, pero si usa una base de datos incrustada, cada máquina en la que ejecute el programa tendrá su propia base de datos separada, y una y solo una JVM puede usar esa base de datos en una hora. ¿Es eso lo que quieres?

Si es así, el problema es la URL que usa el programa. "jdbc:derby://localhost:1527/contact;create=true" es una URL que le dice a DriverManager que se conecte a una base de datos remota. No importa que el programa cargue primero el controlador integrado.

Una URL incrustada en Derby se parece a esto. jdbc:derby:bar;create=true que usará una base de datos incrustada en el directorio de barras fuera del directorio de inicio del sistema Derby o del directorio de trabajo actual. Para obtener más información sobre las URL incorporadas, consulte aquí la conexión a una base de datos derby basada en archivos .