【问题标题】:No suitable driver found for jdbc? [duplicate]找不到适合 jdbc 的驱动程序? [复制]
【发布时间】:2013-06-30 05:55:54
【问题描述】:

我从 Oracle 的网站上获取了这个示例,但我无法实现它。它一直显示错误。我已经将 mysql 5.1 驱动程序 jar 添加到我的项目 lib 文件夹中 以及我的构建路径。如何修复我的代码?

链接 - http://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

错误-

java.sql.SQLException: No suitable driver found for jdbc:JavaEE://localHost:3306/
    at java.sql.DriverManager.getConnection(DriverManager.java:602)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at com.beans.us.dao.Data.getConnection(Data.java:25)
    at com.beans.us.dao.Data.main(Data.java:43)
Cannot connect to database

代码 -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class Data {

    public static Connection getConnection() {

        Connection conn = null;
        Properties connectionProps = new Properties();
        String userName = "root";
        String password = "root";
        String dbms = "JavaEE";
        String serverName = "localHost";
        String portNumber = "3306";

        connectionProps.put("user", userName);
        connectionProps.put("password", password);

        try {

            conn = DriverManager.getConnection("jdbc:" + dbms + "://"
                    + serverName + ":" + portNumber + "/", connectionProps);
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }

        if (conn != null) {
            System.out.println("Connected to database");
        } else {
            System.out.println("Cannot connect to database");
        }

        return conn;
    }

    public static void main(String[] args) {

        getConnection();

    }

}

【问题讨论】:

  • 什么样的JavaEE数据库?没见过,java朋友默认的db是derby

标签: java jdbc


【解决方案1】:

你的连接字符串是:

"jdbc:JavaEE://..."

但对于 MySQL 应该是

"jdbc:mysql://..."

另外,你忘记加载驱动了:

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

需要在调用前完成

conn = DriverManager.getConnection(...);

【讨论】:

  • Class.forName("com.mysql.jdbc.Driver");这里不需要。你的答案赢了。我认为 dbms 意味着我的数据库。愚蠢的错误。
【解决方案2】:

您好像忘记加载驱动了。

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

Class.forName() 导致 ClassLoader 将类加载到内存中。 JDBC 驱动程序类包含一个静态初始化块,该块将驱动程序注册到DriverManager 以供以后参考。

之前没注意到,你的连接字符串应该是"jdbc:mysql://localhost:3306/dbname"

【讨论】:

  • 第 4 版 jdbc 驱动程序不再需要它。
  • @jtahlborn - 是的。我的代码中有那行,但它仍然失败。因此,在将代码发布到 SO 之前,我删除了该行。否决了答案。我建议将答案降为 0 分,不要再进一步了。
【解决方案3】:

你的jdbc字符串格式不正确,看看这个问题的答案:

What is the MySQL JDBC driver connection string?

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2019-08-24
    • 2012-07-14
    • 2020-05-02
    • 2013-04-01
    • 2014-07-14
    相关资源
    最近更新 更多