【问题标题】:JAVA SQL - No suitable driver found for jdbc:derby [duplicate]JAVA SQL - 找不到适合 jdbc:derby 的驱动程序 [重复]
【发布时间】:2014-01-04 16:15:12
【问题描述】:

我是 JAVA 和 SQL 的新手。

在一个练习中,我需要从 NetBeans 中的示例 SQL 表中读取数据。

在“服务”中,我启动了 JAVA DB 服务器。都好。出现以下消息:

Mon Dec 16 21:40:36 EST 2013 : Security manager installed using the Basic server security policy.
Mon Dec 16 21:40:37 EST 2013 : Apache Derby Network Server - 10.8.3.0 - (1405108) started and ready to accept connections on port 1527

但是当我运行这个程序(下)时,出现以下错误:

SQL Error: java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/sample 0 08001

这里是代码.. 我怎样才能确保找到正确的驱动程序?

import java.sql.*;

public class TableReporter {

    public static void main(String[] args) {
        String data = "jdbc:derby://localhost:1527/sample";
        try (
            Connection conn = DriverManager.getConnection(
            data, "app", "APP");
            Statement st = conn.createStatement()) {

            Class.forName("org.apache.derby.jdbc.ClientDriver");

            ResultSet rec =st.executeQuery(
                    "select * " +
                    "from SYS.SYSTABLES" +
                    "order by TABLENAME");
            while(rec.next()){
                System.out.println("TABLEID:\t" + rec.getString(1));
                System.out.println("TABLENAME:\t" + rec.getString(2));
                System.out.println("TABLETYPE:\t" + rec.getString(3));
                System.out.println("SCHEMAID:\t" + rec.getString(4));
                System.out.println();
            }
        st.close();
        } catch (SQLException s){
            System.out.println("SQL Error: " + s.toString() + " "
                    + s.getErrorCode() + " " + s.getSQLState());
        } catch (Exception e) {
            System.out.println("Error: " + e.toString()
                    +e.getMessage());
                }   
    }   
}

【问题讨论】:

  • 查看页面右侧的相关链接
  • Java是单词而不是首字母缩写,应该写成“Java”而不是全部大写

标签: java sql


【解决方案1】:

问题在于 jar 文件。

Class.forName("org.apache.derby.jdbc.ClientDriver");

检查,

  1. 无论是否安装。
  2. 如果已安装,是否需要更新 .bashrc 文件。
  3. 或者,您是否在 netBeans IDE 中导入了 .jar 文件。

如果一切都不起作用,只需编写一个简单的 JDBC 程序,使用 notpad 连接到数据库并运行它,检查你的机器有什么问题。

【讨论】:

  • 我必须在“项目”中添加 JavaDB 库.. 右键单击​​“库”.. 但现在当我运行它时,我收到有关用户 ID 和密码的错误消息:SQL 错误: java.sql.SQLNonTransientConnectionException:发生连接身份验证失败。原因:用户名或密码无效。 40000 08004
  • 查看此链接,可能会对您有所帮助,stackoverflow.com/questions/6172930/…
【解决方案2】:

在尝试创建连接之前您不需要加载驱动程序吗?

移动这个语句

Class.forName("org.apache.derby.jdbc.ClientDriver");

成为 try 块中的第一个。

【讨论】:

    【解决方案3】:

    在您的代码中尝试此更改

    Class.forName("org.apache.derby.jdbc.ClientDriver");
    Connection conn = DriverManager.getConnection(
            data, "app", "APP");
            Statement st = conn.createStatement()) {
    

    【讨论】:

      【解决方案4】:

      您需要加载一罐 derby 驱动程序。

      Class.forName("org.apache.derby.jdbc.ClientDriver");

      【讨论】:

      • 它在代码中......
      【解决方案5】:

      虽然我提供了同样的问题

      Class.forName("org.apache.derby.jdbc.ClientDriver");
      

      但我发现我正在加载 db 用户名和密码的属性文件格式不正确。 应该是这样的:

      dburi=jdbc:derby://localhost:1527/dbname
      user=username
      pass=xxxx
      

      在代码中:

      CachedRowSetImpl crs = new CachedRowSetImpl();
      Properties pr = Properties();
      crs.setUrl(pr.getProperty("dburi"));
      crs.setUsername(pr.getProperty("user"));
      crs.setPassword(pr.getProperty("pass"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 2013-04-13
        • 2016-01-05
        • 2012-12-08
        相关资源
        最近更新 更多