Netbeans:如何以编程方式启动Derby数据库

时间:2017-12-21 10:51:35

标签: java derby

我在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数据库?

2 个答案:

答案 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教程。