【问题标题】:unusual No suitable driver found for jdbc://localhost:1527/society未找到适合 jdbc://localhost:1527/society 的驱动程序
【发布时间】:2013-11-10 15:35:06
【问题描述】:

以前我使用此代码连接我的数据库没有发生错误。

但是来到这个 DA 文件,它无法连接到数据库。

我已经阅读了大部分帖子,但其中一些我不明白。[我只是 java 新手]

我曾尝试使用 jdbc:derby://localhost:1527/societydb;create=true

但同样的错误再次发生。

这是代码,

private String host = "jdbc:derby://localhost:1527/societydb";

private String user = "nbuser";
private String password = "nbuser";
private String tableName = "MEMBER";
private void createConnection() {
    try {
        conn = DriverManager.getConnection(host, user, password);
        System.out.println("*** Successfully established the connection to database. ***");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(), "Error Message", JOptionPane.ERROR_MESSAGE);
    }
}
public ArrayList<Member> getMember() {
    ArrayList<Member> memArray = new ArrayList<>();
    try {
        stmt = conn.prepareStatement("SELECT * FROM " + tableName);//<<< error pointing to here
        ResultSet rs = stmt.executeQuery();            
        while (rs.next()){
        Member m = new Member(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getInt(9), rs.getString(10), rs.getString(11));
        memArray.add(m);}
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(), "Error Message", JOptionPane.ERROR_MESSAGE);
    }
    return memArray;
}  

【问题讨论】:

  • 找不到驱动类文件。您是否在类路径中添加了所需的驱动程序 jar 文件?我没有看到任何 class.forname 语句,所以您使用的是 Java 7 吗?
  • 我不明白 class.forname 声明?能解释一下如何获取吗?
  • 您需要使用 Class.forName() 调用显式加载您的驱动程序类。例如。对于 mysql,您执行 Class.forName("com.mysql.jdbc.Driver") 并在类路径中添加 mysql 连接器 jar 文件。为您的 derby 数据库寻找合适的驱动程序类。我指定 Java 7 的原因是,从 java 7 开始,这是自动完成的(您只需将 jar 文件添加到类路径)。

标签: java database


【解决方案1】:

从 Java documentation 开始,您需要的驱动程序是 org.apache.derby.jdbc.EmbeddedDriverorg.apache.derby.jdbc.ClientDriver

也明确说明

Any JDBC 4.0 drivers that are found in your class path are automatically loaded.(However,
 you must manually load any drivers prior to JDBC 4.0 with the method Class.forName.)

注意:JDBC 4.0 从 Java 7 开始作为默认包提供。

至于你的问题在你的类路径中搜索上面提到的类(Ctrl + N in Intellij Idea or Ctrl + R in Eclipse)。如果这些类不存在,请用 Google 搜索它们,下载 jar 文件并将其添加到您的类路径中。

【讨论】:

    【解决方案2】:

    只需添加这些外部罐子:

    • derby.jar
    • derbyclient.jar

    怎么做:

    1. 右键单击您的项目 > 属性 > Java 构建路径 > 库
    2. 点击“添加外部 jar”
    3. 转到 C:\Program Files\Java\jdk1.8.0_65\db\lib
    4. 添加derby.jarderbyclient.jar

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2016-10-29
      • 2016-09-07
      相关资源
      最近更新 更多