大多数的书在描写数据库连接时,都是以下固定格式的的代码:
Class.forName("com.mysql.jdbc.Driver");
...
Connection connection=DriverManager.getConnection(url,user,password);
Class.forName("com.mysql.jdbc.Driver");就是将驱动程序类的Class实例加载到jvm中,并初始化。这个初始化是关键。我们看一下Driver类的关键代码,其中一定包括一个静态初始化块:
static{
t ry {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
原来,你做了Class.forName("com.mysql.jdbc.Driver");这件事后,自动完成了驱动程序类的一个实例的注册(注册到ava.sql.DriverManager.registerDriver中);接下来调用getConnection()方法,就会到注册列表中寻找合适的驱动程序来连接数据库。