【问题标题】:Is Class.forName() mechanism needed? [duplicate]是否需要 Class.forName() 机制? [复制]
【发布时间】:2016-01-28 06:03:57
【问题描述】:

以下代码:

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

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

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

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

【问题讨论】:

  • jdbc4 驱动程序可用。由于数据库和 java 之间的 java 层也在发展(更新的类型),值得。
  • 您正在使用 JDBC 3 驱动程序,它可能不包含加载 JDBC 4 驱动程序所需的服务文件。

标签: java database tomcat jdbc database-connection


【解决方案1】:

自 JDBC 4.0 起不再需要 Class.forName()。

这是Java Tutorials on JDBC的摘录。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    相关资源
    最近更新 更多