每個(gè)數(shù)據(jù)的訪問都用自己的通信協(xié)議,包括還有不同的接口調(diào)用,參數(shù)傳遞。在同一個(gè)程序里要使用不同數(shù)據(jù)庫(kù)里的信息,按照正常的情況來說,那就要寫不同的數(shù)據(jù)庫(kù)連接的方法,就像在程序里寫了多個(gè)精簡(jiǎn)版的 數(shù)據(jù)庫(kù) 客戶端。這樣的編程方式肯定會(huì)讓人不好難受,所以就期望能夠有一種統(tǒng)一的訪問數(shù)據(jù)庫(kù)的方式,大家都用這一種方式去連接數(shù)據(jù)庫(kù),那么將減少很多痛苦。
話說微軟是第一個(gè)給大家?guī)硎锕獾娜耍瞥隽薕DBC的概念,從此所有的程序都不用自己寫數(shù)據(jù)庫(kù)連接程序了,從此跨入了解放時(shí)代。ODBC是一組基于C語言的API,它能兼容不同的數(shù)據(jù)庫(kù),然后提供統(tǒng)一的訪問接口,這樣就為大家節(jié)省出了YY的時(shí)間。
在ODBC推出后多年,有出了一個(gè)新概念OLE DB。這個(gè)是ODBC的升級(jí)版,因?yàn)橐磺卸奸_始面向?qū)ο罅耍赃@個(gè)自然就是以對(duì)象方式來實(shí)現(xiàn)的。而且在性能方面也有了一些提高,自此OLE DB成為微軟的新寵。
ODBC、OLE DB都是底層的數(shù)據(jù)庫(kù)訪問接口,使用起來不是很方便、容易,大家YY的時(shí)間又被占用的,為此微軟決定再次解放大家、所以就出來了ADO的概念。很顯然這是一個(gè)對(duì)象,就是對(duì)OLE DB、ODBC的高層封裝,把大家經(jīng)常要做的數(shù)據(jù)庫(kù)操作都給直接提供出來,大家的YY時(shí)間再次被解救回來了。
不過在這期間Sun公司也沒閑著,為了更大層次的解救JAVA程序猿們的YY時(shí)間,就單獨(dú)寫了一套專門用于JAVA的數(shù)據(jù)庫(kù)訪問接口JDBC,聽名字就知道是山寨創(chuàng)意了。換湯不換藥,唯一的好處就是java代碼里調(diào)用會(huì)更舒服,自己家養(yǎng)的東西肯定用起來更順手。
當(dāng)然sun除了山寨創(chuàng)意外,還保留了對(duì)ODBC的調(diào)用接口【JDBC-ODBC橋】,以防不時(shí)之需;這樣萬一有一天除了一個(gè)新的東西只有ODBC支持,JDBC不支持。這時(shí)還不至于太有壓力。當(dāng)然ODBC的支持也是目前最廣的,某些非主流的數(shù)據(jù)庫(kù)文件的訪問接口也都支持,所以還是留一手的好。
這樣的話,數(shù)據(jù)庫(kù)訪問方式就開始明朗了。見下:

這樣看來,用途最廣、最底層的就是ODBC了。基本所有其它的都會(huì)可能調(diào)用它,JDBC、OLE DB是一個(gè)等級(jí)的;一個(gè)是sun的,一個(gè)是微軟的;ADO不是直接訪問的程序,只是一個(gè)訪問快速通道而已。
注:所有的鏈接方式都需要本機(jī)有相應(yīng)的驅(qū)動(dòng),而驅(qū)動(dòng)是和具體的數(shù)據(jù)庫(kù)是對(duì)應(yīng)的。這樣就會(huì)有3類驅(qū)動(dòng)類型,每類訪問N種數(shù)據(jù)庫(kù)都要N個(gè)驅(qū)動(dòng)。
新聞熱點(diǎn)
疑難解答
圖片精選