mysql 注册驱动_Mysql注册驱动三种方法 | 学步园

考量了许久,决定把最近学的jdbc坐下总结,慢慢来吧,一天总结一小点,既然拖了那么久。

好,下面开始总结。(这里以mysql数据库为例)

首先就要说的是jdbc中注册驱动,首先导入对应的包,例如mysql-connector-java-5.0.8-bin.jar。

DiverManager.class里有个属性drivers,它实际上是一个vector。可在列表中加入很多驱动,

当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动

的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。

注册驱动有三种方式:

(一)DriverManager.registerDriver(new com.mysql.jdbc.Driver());

会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

具体来说就是:

1,加载的时候注册一次驱动(原因请看第三点),实例化的时候又注册一次。所以两次。

2,由于实例化了com.mysql.jdbc.Driver.class,导致必须导入该类(说白了,就是要把这

个类import进去),从而具体驱动产生了依赖。不方便扩展代码。

(二)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");

推荐这种方式,不会对具体的驱动类产生依赖。

其实这个只是把com.mysql.jdbc.Driver.class这个类装载进去,但是关键就在于,在

这个类中,有个静态块,如下:

static{

try{

java.sql.DriverManager.registerDriver(new Driver());

}catch(SQLException e){

throw new RuntimeException("can't register driver!");

}

}

你可能感兴趣的:(mysql,注册驱动)