JDBC驅動程序
JDBC通過一系列接口來訪問數據庫,而這些接口的實現(xiàn)則是由不同的數據庫廠商或組織實現(xiàn)的。要實現(xiàn)對某一特定類型數據庫的訪問就要通過注冊JDBC驅動程序來讓程序知道去哪里調用JDBC API 接口的實現(xiàn)。
先看下面的一段程序:





java.sql.DriverManager:從名字就可以看出是用于驅動程序管理的,它的主要責任是保留一個驅動程序的列表,并通過getConnection方法來給應用程序提供與所請求的URL相匹配的Driver(可能是由于同一個數據庫的驅動程序可能是有幾種不同的實現(xiàn)方式,但如果DriverManager中對一個URL有多個匹配的Driver,它是不是只選擇第一個找到的呢?),并返回Connection對象,如果找不到就會拋出一個異常,也就是這一句 Connection oConn = DriverManager.getConnection(url,userName,password)。同時還提供了registerDriver()和deregisterDriver(),這兩個方法允許驅動程序的工具用DriverManager注冊驅動程序或從列表中刪除。可以感覺出是在用Class.froName("com.mysql.jdbc.Driver").newInstance();加載類并初始化這個類的靜態(tài)初始化部分時調用registerDriver()的方法注冊的,我在mysql驅動程序的源碼的Driver類中找到對這個方法的調用。








































