如果我在使用 JDBC 时不包含 db 驱动程序会怎样?

Posted

技术标签:

【中文标题】如果我在使用 JDBC 时不包含 db 驱动程序会怎样?【英文标题】:What happens if I don't include a db driver when using JDBC? 【发布时间】:2009-01-29 23:27:34 【问题描述】:

我是 java 开发的新手,很高兴看到与我习惯的 php 环境相比,在支持多个平台时数据库实现要容易得多。

然而,有一件事情让我感到困惑 - 我到处阅读我必须对我想使用的数据库驱动程序进行运行时包含,即:

Class.forName(com.example.jdbc.Driver).newInstance();

但是,省略它似乎也可以正常工作 - 所以我的问题是,jdbc 是否会根据服务器 url 自动找到驱动程序?如果是这样,为什么我读过的所有关于该主题的教程都包含这一行?

另外——如果有人对在线java学习资源(尤其是企业开发)有什么好的建议,请分享!

【问题讨论】:

【参考方案1】:

是的,这在 JDK 6 中得到了改进。请参阅 this O'Reilly article for JDBC 4.0 improvements。

特别是:

在 JDBC 4.0 中,我们不再需要 使用显式加载 JDBC 驱动程序 类.forName()。当方法 getConnection 被调用, DriverManager 将尝试找到一个 来自 JDBC 的合适驱动程序 加载的驱动程序 初始化和那些加载 显式使用相同的类加载器 作为当前应用程序。

另请参阅 JDK 6 中的 JavaDoc for DriverManager。

【讨论】:

【参考方案2】:

JDK 6 中没有这种变化吗?

【讨论】:

这很有意义 - 并且会支持我的理论,即我需要找到更好的地方来获取信息:)

以上是关于如果我在使用 JDBC 时不包含 db 驱动程序会怎样?的主要内容,如果未能解决你的问题,请参考以下文章

Java - JDBC替代品[关闭]

Java - JDBC替代品[关闭]

DB2 JDBC 连接到 IASP 中的模式

DB2 JDBC 驱动程序(类型 4)在 Execute() 上挂起

在 DB2 中实现类型 4 jdbc 驱动程序

找不到适合 jdbc:sqlite 的驱动程序