【问题标题】:Why am I receiving this SQLException error stating that no suitable driver can be found?为什么我会收到此 SQLException 错误,指出找不到合适的驱动程序?
【发布时间】:2012-05-08 15:16:35
【问题描述】:

我在 Mac 上运行 MySQL 的 MAMP 实例。我正在尝试使用 jdbc 驱动程序将我的 java 代码连接到名为“test”的数据库,并使用名为“customer”的表。我不断收到错误消息:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:8889/test

我不确定问题出在我的代码上,还是 MySQL 的 MAMP 实例的配置问题,或者完全是其他问题。

我有一个初始化驱动方法:

public void initializeDriver(){
     try{
      Class.forName("com.mysql.jdbc.Driver");
      }
     catch(ClassNotFoundException e) {
        System.err.println(e.toString());
     }

 }

我通过以下方式创建了一个连接:

public void insertCustomer(String connectionUrl, String connectionUser, String connectionPassword, Customer customer) {

         try{
            Connection conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
            Statement constat = conn.createStatement();
            String query = "INSERT INTO customers (customer_id, email, deliverable, create_date) VALUES (" + customer.id + ", " + customer.emailAddress + ", " + customer.deliverable + ", " + customer.createDate + ")" ;
            constat.executeQuery(query);
            conn.close();

         }
         catch(SQLException e){
             System.out.println(e.toString());
         }


     }

我已经下载了 mysql-connector-java-5.1.20 并将其设置在我的类路径中。

如果有人对我如何纠正此错误有任何建议,我将不胜感激!

【问题讨论】:

    标签: java mysql jdbc sqlexception


    【解决方案1】:

    您必须将MySQL jdbc connector jar 库放入类路径中。

    然后在打开连接之前初始化驱动程序,代码如下:

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    

    【讨论】:

    • 哦,我应该在我的问题中说我已经这样做了。我将对其进行编辑以反映这一点,谢谢。
    • 您在使用前是否初始化了驱动程序?这种错误信息是由于系统上没有找到驱动...
    • 我认为这就是我使用我的 initializedriver 方法所做的 - 这不正确吗?
    • 你必须在打开连接之前调用驱动的初始化,看我更新的答案...
    • 没有必要使用.newInstance()(从Java 1.1 btw 开始就没有了)。使用符合 JDBC 4.0 的驱动程序,不再需要自己加载驱动程序。
    【解决方案2】:

    您需要在您的类路径中或由您的容器加载相应的 mysql JDBC 驱动程序 jar。请参阅doc for ConnectorJ 并注意安装说明。

    【讨论】:

      【解决方案3】:

      尝试将 mysql-connector-java-5.1.20.jar 添加到 Glassfish(或 Tomcat)lib 文件夹中。

      【讨论】:

        【解决方案4】:

        你在这一行也有错误

            constat.executeQuery(query);
        

        如果你想在数据库中插入一些数据,你必须使用这个代码

        constat.executeUpdate(query);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-16
          • 1970-01-01
          • 1970-01-01
          • 2011-08-24
          • 1970-01-01
          • 2019-11-21
          相关资源
          最近更新 更多