加载JDBC驱动程序

我被告知加载JDBC驱动程序的首选方法是:

Class.forName(driverName); 

我知道这对于从XML配置文件或用户输入读取的多个驱动程序之间的动态决策更好。 我很好奇的是,如何调用此语句将指定的驱动程序加载到我们甚至没有将结果“类”对象存储在任何地方的环境中。 JavaDocs条目说:

 public static Class forName(String className) throws ClassNotFoundExceptionReturns 

返回与具有给定字符串名称的类或接口关联的Class对象

在这种情况下,Java开发人员如何仅通过此语句设法促进驱动程序对象的存在?

Class#forName()运行静态初始值设定项 (您知道, static应用于类,而不是实例)。 JDBC驱动程序实现应该在静态初始化程序中注册自己。

 public class SomeDriver implements Driver { static { DriverManager.registerDriver(new SomeDriver()); } } 

请注意,存在错误的JDBC驱动程序,例如org.gjt.mm.mysql.Driver ,它错误地将自己注册在构造函数中。 这就是为什么你需要在这些驱动程序之后调用newInstance()来让它们自己注册。