注册Jdbc驱动程序的三种方式

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该类,从而具体驱动产生了依赖。不方便扩展代码。

 

 

1. Class.forName("com.mysql.jdbc.Driver"); 

2. DriverManager.registerDriver(new com.mysql.jdbc.Driver())

3. System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver"); 

注释:

   第二种与第三种注册的方法看起来更加的直接与好理解。第一种方法是通过Class把类先装载到java的虚拟机中,并没有创建Driver类的实例。

   第一种与第三种方法可以脱离jdbc的驱动进行编译,第二种方法不可以的,它一定要有jdbc的驱动才可以通过编译,这样对我们的程序就有很多的不好之处,为程序换数据库会带来麻烦
  第一种的好处在于能够在编译时不依赖于特定的JDBC Driver库,也就是减少了项目代码的依赖性,而且也很容易改造成从配置文件读取JDBC配置,从而可以在运行时动态更换数据库连接驱动。

转载于:https://www.cnblogs.com/yaozz/p/7900946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值