1,JDBC是一套協(xié)議,是JAVA開發(fā)人員和數(shù)據(jù)庫廠商達(dá)成的協(xié)議,也就是由Sun定義一組接口,由數(shù)據(jù)庫廠商來實(shí)現(xiàn),并規(guī)定了JAVA開發(fā)人員訪問數(shù)據(jù)庫所使用的方法的調(diào)用規(guī)范
2、每個(gè)數(shù)據(jù)庫廠商會(huì)實(shí)現(xiàn)Driver接口,且會(huì)調(diào)用DriverManager的靜態(tài)registerDriver方法。如:
static {
try {
DriverManager.registerDriver(new PoolingDriver());
} catch(Exception e) {
}
}
所以在Class.formName()的時(shí)候即已調(diào)用了registerDriver方法,而通過DriverManager可以得到Connection(甚至是Driver)。
從這里也可以看出:不一定要Class.forName來加載驅(qū)動(dòng),可以直接new DriverImpl()的方式。
3、由Connection可以得到Statement或者它的子類PrepareStatement,通過查詢得到的結(jié)果便是ResultSet,傳統(tǒng)的JDBC編程就是圍繞這四個(gè)類展開的。
4、sql包里提供了很多基本數(shù)據(jù)類型的接口供數(shù)據(jù)庫廠商實(shí)現(xiàn)。值得注意的是java.sql下的Date、Time分別只是日期與時(shí)間包裝類,與util.Date相對(duì)應(yīng)的是TimeStamp類。
5、很多項(xiàng)目或者個(gè)人都喜歡直接往web層返回一個(gè)ResultSet,這種做法存在著很大的隱患,ResultSet是基于連接的,往頁面上返回ResultSet就要求Connection不能關(guān)閉,而Connection不顯式地關(guān)閉就只能等待自動(dòng)超時(shí)。
在大并發(fā)量的情況下馬上就掛了。
6、Types.java里提供了每一個(gè)數(shù)據(jù)類型代表的int值,在程序中可以直接調(diào)用。