【问题标题】:How to configure javadb in eclipse?如何在eclipse中配置javadb?
【发布时间】:2015-10-02 14:20:14
【问题描述】:

我尝试了一个关于数据库的简单代码,但它给了我这个错误 -> 错误:没有为 jdbc:derby:CoffeeDB;create=true 找到合适的驱动程序

package Practice;
import java.sql.*;

public class Practice {
public static void main(String[]args)throws Exception{
    final String DB_URL = "jdbc:derby:CoffeeDB;create=true";
    try{
        Connection conn = DriverManager.getConnection(DB_URL);
        Statement stmt = conn.createStatement();

        String sql = ("CREATE TABLE Coffee(Description CHAR(25),Prod Num CHAR(10) NOT NULL PRIMARY KEY,Price DOUBLE)");
        stmt.execute(sql);

        sql = "INSERT INTO Coffee VALUES('Bolivian Dark','14-001',8.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Bolivian Medium','14-002',8.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Brazilian Dark','15-001',7.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Brazilian Medium','15-002',7.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Brazilian Decaf','15-003',8.55)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Central American Dark','16-001',9.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Central American Medium','16-002',9.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Sumatra Dark','17-001',7.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Sumatra Decaf','17-002',8.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Sumatra Medium','17-003',7.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Sumatra Organic Dark','17-004',11.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Kona Medium','18-001',18.45)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Kona Dark','18-002',18.45)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('French Roast Dark','19-001',9.65)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Galapagos Medium','20-001',6.85)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Guatemalan Dark','21-001',9.95)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Guatemalan Decaf','21-002',10.45)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO Coffee VALUES('Guatemalan Medium','21-003',9.95)";
        stmt.executeUpdate(sql);

        String sqlStatement = "SELECT Description FROM Coffee";
        ResultSet result = stmt.executeQuery(sqlStatement);

        System.out.println("Coffees found in the Database");
        System.out.println("-----------------------------");

        while(result.next()){
            System.out.println(result.getString("Description"));
        }

        conn.close();
    }catch(Exception ex){
        System.out.println("ERROR: " + ex.getMessage());
    }
}
}

谁能给我一个关于如何配置它的逐步过程?我试过寻找答案,但并不彻底。

【问题讨论】:

  • 您是否在类路径中添加了正确的 jdbc 驱动程序和 .jar 文件?

标签: java database eclipse derby


【解决方案1】:

正如Petter Friberg 所述,您缺少潜水员和驱动程序初始化语句。此外,您需要将 Derby JAR 添加到您的类路径中。

  1. 转到Apache Derby 下载并下载库。我试过db-derby-10.11.1.1-lib.zip
  2. 提取存档并将lib/derby.jarlib/derbyclient.jar 复制到您的Java 构建路径。
  3. 语句"CREATE TABLE Coffee(Description CHAR(25),Prod Num CHAR(10) NOT NULL PRIMARY KEY,Price DOUBLE)" 存在语法错误。您需要删除Prod Num 列名中的空格字符。您可以使用Prod_NumProdNum\"Prod Num\"

【讨论】:

  • 由于您的 URL 是 jdbc:derby:CoffeeDB,因此您设置了 Derby Embedded 配置,因此您不需要 derbyclient.jar,只需 derby.jar。
  • 我以为 derby.jar 和 derbyclient.jar 已经包含在 jdk 中了?
  • @James Jithin - 我收到此错误 -> 错误:java.net.ConnectException:连接到端口 1527 上的服务器 localhost 时出错,并显示消息连接被拒绝:连接。
  • @James Jithin - Windows
  • @James Jithin - 我对我的代码进行了一些更改。查看这篇文章stackoverflow.com/questions/32919136/… ..
【解决方案2】:
  1. 下载驱动程序Derby driver,如果我没记错的话是derby.jar(添加到类路径)

  2. 连接前注册驱动

    Driver driver =  (Driver) Class.forName("org.apache.derby.jdbc.EmbeddedDriver")
    .newInstance();
    
    DriverManager.registerDriver(driver);
    

您需要尝试 catch 或让您的方法抛出 Class.forName 异常

更多信息请查看SQLException: No suitable driver found for jdbc:derby://localhost:1527

【讨论】:

  • 由于您的 URL 是 jdbc:derby:CoffeeDB,因此您设置了 Derby Embedded 配置,因此您不需要 derbyclient.jar,只需 derby.jar。此外,您不想尝试加载 ClientDriver,而是要加载 EmbeddedDriver。使用 EmbeddedDriver 进行嵌入式配置连接 URL 字符串;使用 ClientDriver 进行客户端-服务器配置连接 URL 字符串 (jdbc:derby://host-name:port/...)
  • 谢谢,编辑了我的答案,并为你的评论点赞(我用德比很久了)
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 2014-04-14
  • 2012-04-05
  • 2017-09-01
相关资源
最近更新 更多