一尘不染

是否需要Class.forName()机制?

tomcat

以下代码:

Class.forName(dbDriver); // "org.postgres.Driver" or "com.mysql.jdbc.Driver"

是/是打开JDBC连接所必需的。

我听说现代JDBC驱动程序不再需要它。但是我无法在项目中将其删除,因为我遇到了No suitable driver found异常。我正在使用postgresql-9.1-901.jdbc3.jarJava7和tomcat7。

什么时候可以省略Class.forName(...)构建?


阅读 374

收藏
2020-06-16

共1个答案

一尘不染

从JDBC 4.0开始,不需要Class.forName()。

这是JDBC的Java教程的摘录。

早期 版本的JDBC中,要获得连接,首先必须通过调用方法Class.forName初始化JDBC驱动程序。此方法需要一个java.sql.Driver类型的对象。每个JDBC驱动程序包含一个或多个实现接口java.sql.Driver的类。Java
DB的驱动程序是org.apache.derby.jdbc.EmbeddedDriver和org.apache.derby.jdbc.ClientDriver,而MySQLConnector / J的驱动程序是com.mysql.jdbc.Driver。请参阅DBMS驱动程序的文档以获取实现接口java.sql.Driver的类的名称。

在类路径中找到的所有JDBC 4.0驱动程序都会自动加载。 (但是,必须使用Class.forName方法手动加载JDBC4.0之前的所有驱动程序。)

2020-06-16