Launch Derby Programmatically

Please view the following code

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)
            {



            }
        }


    }

DatabaseUI

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();
    }
}

In this case, I need to start the derby manually (I use NetBeans) by right-clicking on the node> database server. This is a built-in database, which means that I take it from one machine to another and want to start by simply double-clicking on the jar file and not configure the database on each computer and start them manually. But, if I did not start the database manually, I get an error

java.sql.SQLNonTransientConnectionException: java.net.ConnectException: Error connecting to localhost server on port 1527 with the message Connection refused: connect.

, NetBeans, , . Derby , ? , , "create=true", NetworkServer.start(), . , .

+5
1

, , jar,

, JVM . , jar , , , , , , JVM . , ?

, URL-, . "jdbc:derby://localhost:1527/contact;create=true" - URL-, DriverManager . , .

URL- Derby . jdbc:derby:bar;create=true, Derby. URL- . Derby.

+9

All Articles