【jdbc】为什么通过DriverManager的getConnection()方法获取数据库连接

DriverManager是驱动的管理类

1)通过重载的getConnection()方法获取数据库连接,较为方便

2)通过DriverManager可以注册并同时管理多个驱动程序:如果注册了多个数据库连接,则调用getConnection()方法时传入不同参数,返回不同的数据库连接

 

查看DriverManager类的重载的getConnection()源码,可以看到其中的一部分:

for(DriverInfo aDriver : registeredDrivers) {
            // If the caller does not have permission to load the driver then
            // skip it.
            if(isDriverAllowed(aDriver.driver, callerCL)) {
                try {
                    println("    trying " + aDriver.driver.getClass().getName());
                    Connection con = aDriver.driver.connect(url, info);
                    if (con != null) {
                        // Success!
                        println("getConnection returning " + aDriver.driver.getClass().getName());
                        return (con);
                    }
                } catch (SQLException ex) {
                    if (reason == null) {
                        reason = ex;
                    }
                }

            } else {
                println("    skipping: " + aDriver.getClass().getName());
            }

        }

 

上面的DriverInfo其实Driver的封装类,源码如下:

class DriverInfo {

    final Driver driver;
    DriverInfo(Driver driver) {
        this.driver = driver;
    }

    public boolean equals(Object other) {
        return (other instanceof DriverInfo)
                && this.driver == ((DriverInfo) other).driver;
    }

    public int hashCode() {
        return driver.hashCode();
    }

    public String toString() {
        return ("driver[className="  + driver + "]");
    }
}

那么实际上就是DriverInfo获取driver,调用connect()方法,按照不同的参数返回不同的数据库连接

你可能感兴趣的:(#,Jdbc)