我正在研究Java JDBC API,并且我读过数据库应用程序的第一步当然是获取到DBMS的连接。 现在,我知道DriverManager是包中的少数(我迄今为止唯一遇到的类)具体类之一,它具有私有构造函数和静态方法(这意味着我不能实例化它,即使我想)。 因此,DriverManager类(在JDBC 4.0之后)会自动加载包含在供应商驱动程序中的驱动程序接口实现(而不是手动调用Class.forName(“blahblah”)来加载类),并且实现类本身具有静态初始化块在他们做的东西沿着这些路线:DriverManager.registerDriver()静态方法
static {
Driver driver=new cfully.qualified.name.DriverClass();
DriverManager.registerDriver(driver);
}
此注册驱动程序实现(如果有的话)在DriverManager的,这反过来将能够URL传递到数据库中所有已注册的驱动程序,以获取Connection对象。 现在,我不明白... DriverManager类如何存储(或注册)驱动程序?这些是实现java.sql.Driver的类的实例,它们是对象,所以我希望DriverManager的一个实例可以存储(比如在一个数组或者某个数据结构中)注册的驱动程序......但是没有据我所知(我称之为静态方法!)。 有人可以解释一下吗?
我不知道您的期望,因为我不明白的解释做什么写在这里。明确你的具体问题并发布一个简单的例子。 –
@RomanC,我不知道如何让你理解,因为问题的问题非常清楚。 – Luca
是什么让你觉得它不会将它们存储在任何地方? – EJP