Java之DriverManager簡單介紹__Java

來源:互聯網
上載者:User
開心一笑

愛神和月老
甲:“你知道西方國家鬧離婚的為什麼比中國的多嗎。”
乙:“這還不簡單,因為西方的愛神丘位元是個娃娃,而中國的是月下老人,經驗當然豐富得多。” 視頻教程

大家好,我錄製的視頻《Java之優雅編程之道》已經在CSDN學院發布了,有興趣的同學可以購買觀看,相信大家一定會收穫到很多知識的。謝謝大家的支援……

視頻地址:http://edu.csdn.net/lecturer/994 提出問題

DriverManager類的簡單學習。。。 解決問題

DriverManager在java.sql這個包裡面,管理一組 JDBC 驅動程式的基本服務

package com.evada.de;import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.util.Enumeration;/** * 用靜態Factory 方法管理一個唯一的可重用的串連 * 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);    }}//使用一個靜態方法-靜態Factory 方法,返回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());    }}}

運行結果:

org.mariadb.jdbc.Driver@7cef4e59com.alibaba.druid.proxy.DruidDriver@3ada9e37com.alibaba.druid.mock.MockDriver@4ec6a292org.postgresql.Driver@71c7db30

解釋,因為我們的項目包裡有如下圖片的資料庫驅動,所以會列印下面資訊

這兩者的區別:
DriverManager.registerDriver(new Driver());
Class.forName(“com.mysql.jdbc.Driver”);

org.postgresql.Driver類源碼如下,可以看出postgresql是通過單例形式,new一個驅動Driver,也就是說在串連資料庫是只new了一個Driver

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的源碼,它會把Driver封裝到DriverInfo中,

//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”);
結論:DriverManager.registerDriver(new Driver()); 多new一個Driver浪費;而Class.forName(“com.mysql.jdbc.Driver”); 單例形式,更推薦…… 讀書感悟

來自《一公升的眼淚》 大家的心意,我都接受並且放在了心底 但是媽媽,我不是想要一個過得很舒服的地方 我是在想,今後該如何生活下去 現在的我,只能接受大家的照顧
站也站不穩,說也說不清 儘管如此,這是我自己的身體,我不能放棄。 我還不想放棄用自己的腳走路 想家,電話 媽媽,睡不著,害怕閉上眼睛 想給家裡打電話的,撥了好幾次,我想聽媽媽 的聲音 可是總按不好,救救我,媽媽~~~~~
沒有了,我可以做的事,沒有了。 其他

如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎轉載,點贊,頂,歡迎留下寶貴的意見,多謝支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.