在JDBC中,我们使用


  Class.forName(“ com.microsoft.sqlserver.jdbc.SQLServerDriver”)。newInstance();


将对象加载到内存中的方法。然后,当我们使用DriverManager类获得与Sql Server的连接时,DriverManager会自动使用内存中加载的驱动程序集中的适当驱动程序。可以将DriverManager概念与.net中使用的提供程序设计模式进行比较吗?如果不是,那我们到底是什么意思


  Class.forName(“ com.microsoft.sqlserver.jdbc.SQLServerDriver”)


方法,为什么不使用new关键字创建sql服务器驱动程序类的对象?

最佳答案

Class.forName("XXXDriver")调用XXXDriver的静态块。
通常,静态块调用DriverManager.registerDriver(new XXXDriver())将其自身注册到DriverManager

就像是:

public class XXXDriver implements Driver{
  static{
    //Be invoked by Class.forName("XXXDriver")
    DriverManager.registerDriver(new XXXDriver())
  }
...
}

10-08 14:24