亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

jdbc中class.forname的作用

2019-11-26 15:45:03
字體:
來源:轉載
供稿:網友

使用JDBC時,我們都會很自然得使用下列語句:

復制代碼 代碼如下:

Class.forName("com.mysql.jdbc.Driver");  
String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8";  
String user = "";  
String psw = "";  
Connection con = DriverManager.getConnection(url,user,psw); 

為什么說很自然呢,因為無論是網上還是書本教程上得例子都是這樣的,而且程序也確實正常運行了,于是大家也就心安理得的找葫蘆畫瓢下去了。
一定要有這一句嗎?不是的,我們完全可以用這樣一句代替它:

復制代碼 代碼如下:

com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();  
//or:  
//new com.mysql.jdbc.Driver(); 
String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8";  
String user = "";  
String psw = "";  
Connection con = DriverManager.getConnection(url,user,psw);

大家可能都看出個大概來了,我們只需要在調用DriverManager的getConnection方法之前,保證相應的Driver類已經被加載到jvm中,并且完成了類的初始化工作就行了,而具體是怎樣實現這個功能卻是沒有講究的。上面兩種方法都可以實現這個功能,因此程序可以正常運行。注意了,如果我們進行如下操作,程序是不能正常運行的,因為這樣僅僅使Driver類被裝載到jvm中,卻沒有進行相應的初始化工作。

復制代碼 代碼如下:

com.mysql.jdbc.Driver driver = null;  
//or:  
ClassLoader cl = new ClassLoader();  
cl.loadClass("com.mysql.jdbc.Driver"); 

我們都知道JDBC是使用Bridge模式進行設計的,DriverManager就是其中的Abstraction,java.sql.Driver是Implementor,com.mysql.jdbc.Driver是Implementor的一個具體實現(請參考GOF的Bridge模式的描述)。大家注意了,前一個Driver是一個接口,后者卻是一個類,它實現了前面的Driver接口。
Bridge模式中,Abstraction(DriverManager)是要擁有一個Implementor(Driver)的引用的,但是我們在使用過程中,并沒有將Driver對象注冊到DriverManager中去啊,這是怎么回事呢?jdk文檔對Driver的描述中有這么一句:
When a Driver class is loaded, it should create an instance of itself and register it with the DriverManager
哦,原來是com.mysql.jdbc.Driver在裝載完后自動幫我們完成了這一步驟。源代碼是這樣的:

復制代碼 代碼如下:

package com.mysql.jdbc  

public class Driver extends NonRegisteringDriver implements java.sql.Driver {  
 // ~ Static fields/initializers 
 // Register ourselves with the DriverManager 
 // 
 static {  
    t ry {  
              java.sql.DriverManager.registerDriver(new Driver());  
          } catch (SQLException E) {  
              throw new RuntimeException("Can't register driver!");  
          }  
  }  
// ~ Constructors 
/** 
  * Construct a new driver and register it with DriverManager
  *  
  * @throws SQLException
  *             if a database error occurs.
  */ 
 public Driver() throws SQLException {  
     // Required for Class.forName().newInstance() 
 }  
}

PS:改修JDBC驅動的裝載

復制代碼 代碼如下:

ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class clazz = cl.loadClass("com.mysql.jdbc.Driver");
clazz.newInstance();
Connection conn = DriverManager.getConnection("jdbcurl");

同樣可以執行。但是這樣就多構造了一個com.mysql.jdbc.Driver實例。同Class.forName("com.mysql.jdbc.Driver")。

即:

復制代碼 代碼如下:

Class.forName("com.mysql.jdbc.Driver")==cl.loadClass("com.mysql.jdbc.Driver").newInstance();

Class.forName和 ClassLoader.loadClass是兩碼事,一個實例化類,一個加載類

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类69精品久久久久9999| 日韩不卡中文字幕| 日本韩国欧美精品大片卡二| 国产精品久久久久久久久久久久久| 成人亲热视频网站| 亚洲男人天堂网站| 亚洲日本欧美日韩高观看| 亚洲国产欧美自拍| 欧美日韩成人精品| 欧美日韩激情视频| 91黑丝高跟在线| 黄色精品一区二区| 国产免费一区视频观看免费| 欧美俄罗斯性视频| 最近2019年手机中文字幕| 日韩av免费看| 亚洲综合社区网| 日韩亚洲一区二区| 精品久久香蕉国产线看观看gif| 裸体女人亚洲精品一区| 97成人精品区在线播放| 久久久91精品| 岛国av一区二区三区| 欧洲美女免费图片一区| 欧美大尺度电影在线观看| 国产欧美精品一区二区三区-老狼| 国产精品久久久久久久av大片| 中文字幕日韩av综合精品| 国产精品专区第二| 美日韩丰满少妇在线观看| 亚洲伊人久久大香线蕉av| 欧美日韩国产成人在线| 国产91对白在线播放| 在线精品视频视频中文字幕| 久久露脸国产精品| 日韩av电影免费观看高清| 国产精品ⅴa在线观看h| 国产精品美女午夜av| 欧美裸体xxxx| 成人有码视频在线播放| 精品无人国产偷自产在线| 精品美女永久免费视频| 亚洲在线免费观看| 91精品久久久久久久久久入口| 亚洲嫩模很污视频| 91综合免费在线| 欧美老女人性生活| 亚洲日韩欧美视频| 两个人的视频www国产精品| 日av在线播放中文不卡| 日韩免费av在线| 国产精品日韩在线一区| 久久精品国产成人| 一夜七次郎国产精品亚洲| 欧美日韩国产一中文字不卡| 美女国内精品自产拍在线播放| 国产精品黄页免费高清在线观看| 精品久久久久久久久国产字幕| 日韩av电影在线播放| 国产精品福利网站| 茄子视频成人在线| 国产999在线观看| 久久精品国产免费观看| 久久理论片午夜琪琪电影网| 亚洲人线精品午夜| 欧洲美女7788成人免费视频| 97精品久久久中文字幕免费| 亚洲午夜女主播在线直播| 国产精品盗摄久久久| 亚洲福利视频网站| 国产成人精彩在线视频九色| 久久频这里精品99香蕉| 国产一区二区日韩精品欧美精品| 亚洲a区在线视频| 日韩av电影国产| 亚洲无限乱码一二三四麻| 亚洲最新在线视频| 久久久爽爽爽美女图片| 久久精品亚洲精品| 亚洲精品国产品国语在线| 不卡av日日日| 91精品国产高清久久久久久久久| 亚洲天堂av在线免费观看| 亚洲综合中文字幕68页| 在线视频国产日韩| 神马国产精品影院av| 久久99久久久久久久噜噜| 国产91免费观看| 中文字幕亚洲激情| 插插插亚洲综合网| 欧美成人精品激情在线观看| 日韩精品免费综合视频在线播放| 国内精品久久久久伊人av| 九色精品美女在线| 国产精品中文在线| 亚洲人午夜精品免费| 日韩中文字幕视频| 91精品视频在线免费观看| 欧美老少做受xxxx高潮| 黑人狂躁日本妞一区二区三区| 久久久爽爽爽美女图片| 成人午夜在线视频一区| 中文字幕在线国产精品| 国产精品日韩久久久久| 伊人亚洲福利一区二区三区| 亚洲人成77777在线观看网| 欧美性xxxxx极品| 日韩网站免费观看| 性色av一区二区三区| 日韩免费看的电影电视剧大全| 91成人免费观看网站| 91成人国产在线观看| 国产精品狼人色视频一区| 国产不卡在线观看| 欧美体内谢she精2性欧美| 亚洲国产精品小视频| 黄色成人在线播放| 国产亚洲欧美一区| 国产视频久久久久久久| 国产成人极品视频| 97在线视频国产| 精品亚洲aⅴ在线观看| 亚洲精品有码在线| 国产福利精品视频| 国产专区精品视频| 亚洲欧美变态国产另类| 国产欧美日韩综合精品| 成人国产亚洲精品a区天堂华泰| 亚洲sss综合天堂久久| 欧美精品激情视频| 久久久久久久久91| 日本高清视频精品| 精品国产户外野外| 成人中文字幕在线观看| 九九视频这里只有精品| 亚洲欧美日韩中文在线制服| 欧美高清电影在线看| 青青在线视频一区二区三区| 日韩在线一区二区三区免费视频| 欧美性理论片在线观看片免费| 国语自产偷拍精品视频偷| 亚洲影院色无极综合| 日韩av在线一区二区| 91精品国产91久久久久久最新| 亚洲无av在线中文字幕| 欧美国产在线电影| 成人情趣片在线观看免费| 国产美女久久久| 日韩免费中文字幕| 色诱女教师一区二区三区| 91欧美精品成人综合在线观看| 91在线观看免费高清完整版在线观看| 欧美一区二区三区免费视| 国产欧亚日韩视频| 国产亚洲欧美日韩美女| 亚洲国产精品网站| 欧美激情综合色综合啪啪五月| 日韩美女视频在线观看| 欧美日韩一区二区免费在线观看| 精品在线欧美视频| 亚洲第五色综合网| 中文字幕av一区中文字幕天堂| 精品亚洲aⅴ在线观看| 狠狠躁夜夜躁人人躁婷婷91|