>  기사  >  Java  >  Java의 DriverManager에 대한 간략한 소개

Java의 DriverManager에 대한 간략한 소개

黄舟
黄舟원래의
2017-01-17 15:09:463201검색

행복한 미소

사랑의 신과 악라오

A: "왜 중국보다 서양에서 이혼이 더 많은지 아세요?"

B : "이건 간단한 일이 아닙니다. 서양의 사랑의 신 큐피드는 인형이고, 중국의 큐피드는 달 아래 노인이기 때문입니다. 물론 경험이 훨씬 더 많습니다! "

질문하기

DriverManager 클래스를 간단하게 학습? ? ?

문제 해결

DriverManager는 java.sql 패키지에 있으며 JDBC 드라이버의 기본 서비스 집합을 관리합니다.

[code]package com.evada.de;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Enumeration;

/**
 * 用静态工厂方法管理一个唯一的可重用的连接
 * Created by Ay on 2016/5/1.
 */
public class ConnUtils{

private ConnUtils(){}
private static Connection con;
//在静态代码块中创建与数据库的连接
static{
    try{
        //postgresql驱动名称
        Class.forName("org.postgresql.Driver");
        //数据库连接路径
        String url = "jdbc:postgresql://127.0.0.1:5432/postgres";
        //用户名和密码
        con = DriverManager.getConnection(url, "postgres", "888888");
    }catch(Exception e){
        throw new RuntimeException(e.getMessage(),e);
    }
}
//使用一个静态方法-静态工厂方法,返回connection实例
public static Connection getCon(){
    return con;
}

//main函数测试用
public static void main(String[] args) {
    //获取所有的数据库驱动
    Enumeration<Driver> driverEnum = DriverManager.getDrivers();
    //打印出所有驱动信息
    while(driverEnum.hasMoreElements()){
        System.out.println(driverEnum.nextElement());
    }
}
}

실행 결과:

[code]org.mariadb.jdbc.Driver@7cef4e59
com.alibaba.druid.proxy.DruidDriver@3ada9e37
com.alibaba.druid.mock.MockDriver@4ec6a292
org.postgresql.Driver@71c7db30

설명, 우리 프로젝트 패키지에는 아래와 같은 데이터베이스 드라이버가 있으므로 다음 정보가 인쇄됩니다.

Java의 DriverManager에 대한 간략한 소개

Java의 DriverManager에 대한 간략한 소개

Java의 DriverManager에 대한 간략한 소개

둘의 차이점은

DriverManager.registerDriver(new Driver()); 
Class.forName(“com.mysql.jdbc.Driver”);

org.postgresql.Driver 클래스 소스코드를 보면 다음과 같다. postgresql이 싱글톤 형태와 새로운 드라이버를 사용하고 있다는 것을 알 수 있다. 예를 들어, 데이터베이스에 연결할 때 새 Driver

[code]static {
        sharedTimer = new SharedTimer(logger);

        try {
            //注册
            register();
        } catch (SQLException var1) {
            throw new ExceptionInInitializerError(var1);
        }

        protocols = new String[]{"jdbc", "postgresql"};
    }

    public static void register() throws SQLException {
        if(isRegistered()) {
            throw new IllegalStateException("Driver is already registered......);
        } else {
            Driver registeredDriver = new Driver();
            DriverManager.registerDriver(registeredDriver);
            registeredDriver = registeredDriver;
        }
    }

를 만든 후에 DriverManager의 소스 코드를 살펴보겠습니다. DriverInfo,

[code]//
public static synchronized void registerDriver(java.sql.Driver driver,
            DriverAction da)
        throws SQLException {

        /* Register the driver if it has not already been added to our list */
        if(driver != null) {
            //将驱动包装到DriverInfo中
            registeredDrivers.addIfAbsent(new DriverInfo(driver, da));
        } else {
            // This is for compatibility with the original DriverManager
            throw new NullPointerException();
        }

        println("registerDriver: " + driver);

    }
Class.forName(“com.mysql.jdbc.Driver” ;


위는 Java의 DriverManager에 대한 간략한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. )!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.