Search code examples
javaderby

Netbeans: How to start a Derby Database programmatically


I have developed a Java project in Netbeans. Now I have the problem that the following code is only executeable if i start the specified database first:

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

The I have created the database inside of Netbeans. My question is, how can I start the jdbc Database programatically?


Solution

  • You are looking for programming Derby in embedded mode. Here is a code snippet:

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

    For a full tutorial, have a look at my Programming Derby with JDBC tutorial.