• Jdbc注册驱动的三种方式


    Jdbc注册驱动的三种方式
    分类: 【Java 基础】 2012-05-17 07:34 2558人阅读 评论(0) 收藏 举报
    jdbc数据库javavectorurljar
    关于驱动包
    
    jdbc中注册驱动,首先导入对应的包,例如mysql-connector-java-5.0.8-bin.jar。驱动包是java和具体数据库之间的连接桥梁,由数据库厂商开发。每一种数据库对应一款驱动jar,甚至每一个版本的数据库都有自己对应版本的驱动jar。 
    
    关于java.sqlDriverManger类
    
    Java的驱动管理类。管理一组 JDBC 驱动程序。
    javax.sql.DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。
    更深的理解请参见java 文档。
    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");( 关于这句代码的进一步理解请参看另一篇文章《从Class.forName()到类的装载机制》)
    推荐这种方式,不会对具体的驱动类产生依赖(就是不用import package了)。 
    其实这个只是把com.mysql.jdbc.Driver.class这个类装载进去,但是关键就在于,在 
    这个类中,有个静态块,如下: 
    static{ 
       try{ 
    java.sql.DriverManager.registerDriver(new Driver()); 
    }catch(SQLException e){ 
       throw new RuntimeException("can't register driver!"); 
    } 
    } 
    就是因为这个代码块,让类在加载的时候就把驱动注册进去了! 
    参考资源:
    http://kin111.blog.51cto.com/738881/168295
    http://selinazzx.iteye.com/blog/366287 
    
  • 相关阅读:
    等额本息计算公式推导
    使用Charles抓取APP之HTTPS请求
    服务端如何安全获取客户端请求IP地址
    HTTPS到底是个什么鬼?
    了解数字证书、数字签名与常见的加密算法
    centos下如何使用sendmail发送邮件
    Android Studio快捷键——编辑篇
    Universal-Image-Loader源码分析(二)——载入图片的过程分析
    Universal-Image-Loader源码分析(一)——ImageLoaderConfiguration分析
    Volley源码分析(五)Volley源码总结篇
  • 原文地址:https://www.cnblogs.com/wzhanke/p/4836461.html
Copyright © 2020-2023  润新知