我刚刚了解到 java.sql package
。它使用 Class.forName()
动态加载扩展 DriverManager
的驱动程序。然后我们使用 DriverManager.getConnection()
方法获得连接。
那么整个事情是如何运作的呢?
DriverManager 类如何知道如何在不使用实际驱动程序的类名的情况下获取连接。
我们也可以将 Class.forName() 用于自定义应用程序……如果用示例对此进行解释,我将非常高兴。
原文由 SonOfTheEARTh 发布,翻译遵循 CC BY-SA 4.0 许可协议
Class.forName
简单地加载一个类,包括运行它的静态初始化程序,如下所示:您正在谈论的所有其余过程都是特定于 JDBC 的。驱动程序 - 实现
Driver
,它不扩展DriverManager
只是使用DriverManager.registerDriver
注册一个适当的实例。然后当DriverManager
需要为特定连接字符串查找驱动程序时,它依次调用connect
对每个已注册的驱动程序,直到一个成功并返回一个非空连接。请注意,这种注册驱动程序的方式相当过时 - 查看文档
DriverManager
了解获取数据源的更现代方式。