java - JDBC 驱动程序不会自动注册,即使它包含带有 java.sql.Driver 的服务目录?

标签 java mysql jdbc

我正在运行一个简单的程序,它使 JDBC 与 mysql 连接。我正在使用 5.0.8 连接器 jar(mysql 驱动程序)。当我了解 JDBC 4 服务机制时,我们不需要调用 Class.forname("..") 来注册驱动程序。我正在尝试没有它。

Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db"", "root", "root");
        System.out.println("Is Connection closed: "+conn.isClosed());

    } catch (SQLException e) {
        throw new RuntimeException(
                "Error occurred while getting connection because of : " + e.getLocalizedMessage(), e);`
    } finally {
        if (conn != null){
            conn.close();
            System.out.println("Is Connection closed: "+conn.isClosed());
        }
    }

但是当我执行此操作时,它会给出以下错误:

_没有找到适合 jdbc 的驱动程序:mysql://localhost:3306/db

还尝试使用 mysql-connector-java-8.0.12.jar

最佳答案

仅当驱动程序 jar 包含服务定义时,自动驱动程序加载才有效。 MySQL Connector/J 5.0.8 不兼容 JDBC 4,并且包含自动驱动程序所需的服务定义 (META-INF/services/java.sql.Driver)正在加载。因此,自动加载驱动程序无法在 5.0.8 版本上使用。

您将需要使用较新版本的 MySQL Connector/J(例如 5.1.47 或 8.0.12)。

关于java - JDBC 驱动程序不会自动注册,即使它包含带有 java.sql.Driver 的服务目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658394/

相关文章:

java - 可以通过JTextField初始化实例变量吗?

java - 使用示例值初始化 java pojo

java - 如何在android中将多个图像上传到firebase?

Mysql函数TO_DAYS参数不正确

php - Flex 3 或 Flash Builder 4 开发教会管理系统

java - 非法状态异常 : Could not load jdbc driver

sql - SQL查询中转义关键字的通用方法是什么?

tomcat - java.sql.SQLException : No suitable driver 异常

java - ManyToMany 的 JPA Criteria 规范

mysql - 如何将多个列与MySql中的其他表进行比较