Heim  >  Artikel  >  Java  >  Eine kurze Einführung in DriverManager in Java

Eine kurze Einführung in DriverManager in Java

黄舟
黄舟Original
2017-01-17 15:09:463142Durchsuche

Glückliches Lächeln

Der Gott der Liebe und Yue Lao

A: „Wissen Sie, warum es in westlichen Ländern mehr Scheidungen gibt als in China?“

B : „Das ist noch nicht einfach, denn Amor im Westen ist eine Puppe, während der Chinese ein alter Mann unter dem Mond ist und natürlich viel mehr Erfahrung hat!“

Stellen Sie eine Frage

Einfaches Erlernen der DriverManager-Klasse? ? ?

Das Problem lösen

DriverManager ist im java.sql-Paket enthalten und verwaltet eine Reihe grundlegender Dienste des JDBC-Treibers

[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());
    }
}
}

Ausführungsergebnisse:

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

Erklärung: Da unser Projektpaket den unten gezeigten Datenbanktreiber enthält, werden die folgenden Informationen gedruckt:

Eine kurze Einführung in DriverManager in Java

Eine kurze Einführung in DriverManager in Java

Eine kurze Einführung in DriverManager in Java

Der Unterschied zwischen den beiden:

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

Der Quellcode der Klasse org.postgresql.Driver ist wie folgt: Ein neuer Treiber, d into DriverInfo,

[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;
        }
    }
Class.forName ("com.mysql.jdbc.Driver");

Fazit: DriverManager.registerDriver(new Driver()); eine Verschwendung; während Class.forName("com.mysql.jdbc.Driver" ); Singleton-Formular ist mehr zu empfehlen...
[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);

    }

Das Obige ist eine kurze Einführung in Javas DriverManager Achtung auf die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn