Maison > Java > javaDidacticiel > Une brève introduction à DriverManager en Java

Une brève introduction à DriverManager en Java

黄舟
Libérer: 2017-01-17 15:09:46
original
3222 Les gens l'ont consulté

Sourire heureux

Le Dieu de l'Amour et Yue Lao

A : "Savez-vous pourquoi il y a plus de divorces dans les pays occidentaux qu'en Chine

B ?" : "Ce n'est pas encore simple, car Cupidon en Occident est une poupée, tandis que le chinois est un vieil homme sous la lune, et bien sûr il a beaucoup plus d'expérience !"

Posez une question

Apprentissage facile de la classe DriverManager ? ? ?

Résoudre le problème

DriverManager est dans le package java.sql et gère un ensemble de services de base du pilote 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());
    }
}
}
Copier après la connexion

Exécuter les résultats :

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

Explication, étant donné que notre package de projet contient le pilote de base de données comme indiqué ci-dessous, les informations suivantes seront imprimées

Une brève introduction à DriverManager en Java

Une brève introduction à DriverManager en Java

Une brève introduction à DriverManager en Java

La différence entre les deux :

DriverManager.registerDriver(new Driver()); 
Class.forName(“com.mysql.jdbc.Driver”);
Copier après la connexion

Le code source de la classe org.postgresql.Driver est le suivant. On peut voir que postgresql utilise une forme singleton, un nouveau pilote, c'est-à-dire qu'il est dit que lors de la connexion à la base de données, seul un nouveau pilote

[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;
        }
    }
Copier après la connexion

Jetons un coup d'œil au code source de DriverManager. Il emballera le pilote dans 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);

    }
Copier après la connexion

Class.forName ("com.mysql.jdbc.Driver");

Conclusion : DriverManager.registerDriver(new Driver()); ; while Class.forName("com.mysql.jdbc.Driver" ); Le formulaire Singleton est plus recommandé...

Ce qui précède est une brève introduction au DriverManager de Java. Pour plus de contenu connexe, veuillez prêter attention à. le site PHP chinois (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal