開心一笑
愛神和月老
甲:“你知道西方國家鬧離婚的為什麼比中國的多嗎。”
乙:“這還不簡單,因為西方的愛神丘位元是個娃娃,而中國的是月下老人,經驗當然豐富得多。” 視頻教程
大家好,我錄製的視頻《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”); 單例形式,更推薦…… 讀書感悟
來自《一公升的眼淚》 大家的心意,我都接受並且放在了心底 但是媽媽,我不是想要一個過得很舒服的地方 我是在想,今後該如何生活下去 現在的我,只能接受大家的照顧
站也站不穩,說也說不清 儘管如此,這是我自己的身體,我不能放棄。 我還不想放棄用自己的腳走路 想家,電話 媽媽,睡不著,害怕閉上眼睛 想給家裡打電話的,撥了好幾次,我想聽媽媽 的聲音 可是總按不好,救救我,媽媽~~~~~
沒有了,我可以做的事,沒有了。 其他
如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎轉載,點贊,頂,歡迎留下寶貴的意見,多謝支援。