java.sql.DriverManger类简介
java的驱动管理类。管理一组 JDBC 驱动程序。
javax.sql.DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。更深的理解请参见java 文档。
DiverManager类有个vector(向量)类型的属性drivers。可在向量中加入很多驱动,当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。
方法一
System.setProperty("jdbc.drivers","com.MySQL.jdbc.Driver");
通过系统的属性设置注册驱动,如果要注册多个驱动,则System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:com.Oracle.jdbc.Driver");
这种驱动注册方式很少使用。
方法二
Class.forName("com.mysql.jdbc.Driver");
这种方式不会对具体的驱动类产生依赖(即不用import驱动类)。
Class类的forName方法中对参数指定的类进行了装载操作。在这里将com.mysql.jdbc.Driver类装载到jvm。众所周知,类装载时,将执行被装载类的静态代码块,而Driver类有一个静态代码块如下:
static{
try{
java.sql.DriverManager.registerDriver(newDriver());
}catch(SQLExceptione){
thrownew RuntimeException("can't register driver!");
}
}
所以在装载过程中即完成了driver的注册。这也是使用最多的一种注册驱动方式。
方法三
DriverManager.registerDriver(newcom.mysql.jdbc.Driver());
会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。
具体来说就是:
1,装载Driver类时注册一次驱动(有关类装载,请参考http://www.yanwushu.com/post/54.html),执行此代码时,又注册一次。
2,由于实例化了com.mysql.jdbc.Driver.class,导致必须import该类,从而具体驱动产生了依赖。不方便扩展代码。