我正在运行一个简单的程序,它使 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/