JDBC-注册数据库驱动

来源:互联网 发布:盐城做淘宝网友 编辑:程序博客网 时间:2024/05/16 04:24

偶尔会突然短路,想着为什么Class.forName(${DriverName}); DriverManager里就有注册了这个数据库的驱动呢?


    这是因为,我们在思考 注册数据库驱动 的时候,总是想着我们自己去注册,如果没有显式的去做,就不自在。 这还是因为没有一个OO的思想。


    其实呢,注册数据库驱动这个动作,sun只提供了注册的动作,其余的是谁注册它并不关心,这样呢,它就是一个服务提供者,我提供注册的服务给你,你自己去注册就好了。


    就像加油站,我给加油站以及加油的龙头在那,你没油了你自己去拿着龙头加油。我不需要知道你这是桑塔纳还是水泥车还是宝马。


    sun提供给你这个接口,你们数据库提供商就自己拿去注册。


    下面是代码:


     sun提供的数据库驱动管理类:

   

public static synchronized void registerDriver(Driver driver)        throws SQLException    {        registerDriver(driver, null);    }


    mysql提供的驱动类:(Class.forName()是让JVM去查找指定的类(初始化),并没有实例化,只不过是把类加载到了JVM中。但是由于静态代码和class是在方法区中的,在初始化的时候就会全部执行一次且以后不再执行,所以当初始化时,会加载以下代码中的static片段,即→注册数据库驱动方法)


public class Driver extends NonRegisteringDriver    implements java.sql.Driver{    public Driver()        throws SQLException    {    }    static     {        try        {//mysql的驱动自己拿着sun的驱动管理类进行了注册。我们在使用的时候只要把这个类初始化就行了。            DriverManager.registerDriver(new Driver());        }        catch(SQLException E)        {            throw new RuntimeException("Can't register driver!");        }    }}


0 0
原创粉丝点击