JDBC和ODBC的区别
JDBC
JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語句的Java API,它是Java十三個(gè)規(guī)范之一。可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。
ODBC簡(jiǎn)介
開放數(shù)據(jù)庫(kù)互連(Open Database Connectivity,ODBC)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語言的支持,用戶可以直接將SQL語句送給ODBC。開放數(shù)據(jù)庫(kù)互連(ODBC)是Microsoft提出的數(shù)據(jù)庫(kù)訪問接口標(biāo)準(zhǔn)。開放數(shù)據(jù)庫(kù)互連定義了訪問數(shù)據(jù)庫(kù)API的一個(gè)規(guī)范,這些API獨(dú)立于不同廠商的DBMS,也獨(dú)立于具體的編程語言(但是Microsoft的ODBC文檔是用C語言描述的,許多實(shí)際的ODBC驅(qū)動(dòng)程序也是用C語言寫的。)ODBC規(guī)范后來被X/OPEN和ISO/IEC采納,作為SQL標(biāo)準(zhǔn)的一部分,具體內(nèi)容可以參看《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相關(guān)的標(biāo)準(zhǔn)文件。
兩者之間的聯(lián)系
JDBC和ODBC都是用來連接數(shù)據(jù)庫(kù)的啟動(dòng)程序,JDBC和ODBC由于具有數(shù)據(jù)庫(kù)獨(dú)立性甚至平臺(tái)無關(guān)性,因而對(duì)Internet上異構(gòu)數(shù)據(jù)庫(kù)的訪問提供了很好的支持。
兩者之間的區(qū)別
1.JDBC比ODBC更容易理解
從事編程工作的朋友都知道Java比C語言更好學(xué),主要是因?yàn)镴ava語言是面向?qū)ο蟮母咏说乃季S認(rèn)識(shí),更容易被人接受。而C語言就較為抽象,跟人的認(rèn)識(shí)思維相差較大,其開發(fā)出來的產(chǎn)品也具有類似特點(diǎn)。在ODBC中一個(gè)的簡(jiǎn)單的查詢,也需求分為好幾塊內(nèi)容;而在ODBC驅(qū)動(dòng)程序內(nèi)部再去整合,做一些復(fù)雜的操作。這不僅降低了數(shù)據(jù)庫(kù)啟動(dòng)程序的性能,而且也給程序開發(fā)者開發(fā)實(shí)際運(yùn)用程序帶來了確定的負(fù)面效果。而JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序在設(shè)計(jì)的時(shí)間就包含了大部份基本數(shù)據(jù)操作功能,為此在編寫一些常規(guī)的數(shù)據(jù)庫(kù)操作語句時(shí),如查詢、更新等等,其所需求的源代碼比 ODBC要少的多。故從這方面來說,JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序要比ODBC簡(jiǎn)易理解。
2.JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是面向?qū)ο蟮?br /> JDBC完全遵循Java語言的優(yōu)良特性。通常情況下,只要有Java功能需設(shè)計(jì)基礎(chǔ)的用戶都能在最短時(shí)間內(nèi)了解JDBC驅(qū)動(dòng)程序的架構(gòu),較量簡(jiǎn)易上手,能輕而易舉的開發(fā)出強(qiáng)悍的數(shù)據(jù)庫(kù)實(shí)際運(yùn)用程序。而ODBC的話,由于其內(nèi)部功能復(fù)雜,源代碼編寫要求高。為此即使是一個(gè)的C語言的高手,仍然需求花費(fèi)不少的時(shí)間去了解那個(gè)數(shù)據(jù)庫(kù)啟動(dòng)程序;在編寫源代碼的時(shí)間,還離不開有關(guān)的參考書本。
3.JDBC的移植性要比ODBC要好。
通常情況下,安裝完ODBC驅(qū)動(dòng)程序之后,還需求經(jīng)過確定的配置才能夠應(yīng)用。而不相同的配置在不相同數(shù)據(jù)庫(kù)服務(wù)器之間不能夠通用。也那是說,裝一次需求配置一次。但是JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序則不相同。假如采用JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的話,則只需要選取適當(dāng)?shù)?JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,就不需要額外的配置。在安裝過程中,JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序會(huì)自己完成有關(guān)的配置。為此JDBC的移植性要比ODBC要好。
從ODBC向JDBC過度
也許數(shù)據(jù)庫(kù)編程以前采用的是ODBC驅(qū)動(dòng)程序,而假如數(shù)據(jù)庫(kù)編程目前需要采用JDBC驅(qū)動(dòng)程序,那么能否出現(xiàn)順利過渡呢?答案是肯定的。在JDBC驅(qū)動(dòng)程序中有一類叫作JDBC-ODBC橋接啟動(dòng)程序。這種類別的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序其底層是經(jīng)過ODBC驅(qū)動(dòng)程序來連接數(shù)據(jù)庫(kù)的。假如原先的實(shí)際運(yùn)用程序是基于ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的,或者數(shù)據(jù)庫(kù)沒有幫助對(duì)應(yīng)的JDBC驅(qū)動(dòng)程序,則數(shù)據(jù)庫(kù)編程能利用JDBC-ODBC橋接驅(qū)動(dòng)程序來實(shí)現(xiàn)。也那是說,橋接驅(qū)動(dòng)程序能利用現(xiàn)有的ODBC驅(qū)動(dòng)程序來存取聯(lián)系型數(shù)據(jù)庫(kù)。為此者不僅能保留先前的開發(fā)架構(gòu)(經(jīng)過ODBC來存取數(shù)據(jù)),還能立即應(yīng)用Java作為新的開發(fā)環(huán)境,從而出現(xiàn)ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序到JDBC的順利轉(zhuǎn)型。
不過在采用這種橋接驅(qū)動(dòng)程序的時(shí)間,需求留意幾個(gè)難點(diǎn)。一是那個(gè)橋接驅(qū)動(dòng)程序仍然需要用到ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。由于橋接驅(qū)動(dòng)程序直接聯(lián)系的對(duì)象是ODBC驅(qū)動(dòng)程序,然后再經(jīng)過ODBC驅(qū)動(dòng)程序去訪問數(shù)據(jù)庫(kù)。為此在客戶端必需先安裝并配置好ODBC驅(qū)動(dòng)程序。假如采用的是三層式的開發(fā)框架,也需求安裝ODBC驅(qū)動(dòng)程序。其次,在這種模式下,實(shí)際運(yùn)用程序先調(diào)用JDBC,然后再經(jīng)過JDBC調(diào)用ODBC,最后再跟數(shù)據(jù)庫(kù)通信。顯然其中間多了幾個(gè)環(huán)節(jié)。由于其中間環(huán)節(jié)較量多,但數(shù)據(jù)訪問出現(xiàn)難點(diǎn)的時(shí)候,就不太好查難點(diǎn)。這就好像一道水管,假如中間的接口多了的話,則除了漏水的幾率就較量高。假如真的除了漏水的話,則查詢漏水點(diǎn)的時(shí)間也會(huì)較量困難。為此筆者以為,采用橋接類別的JDBC驅(qū)動(dòng)程序只是權(quán)宜之計(jì)。在適當(dāng)?shù)臅r(shí)間,數(shù)據(jù)庫(kù)開發(fā)還是需要調(diào)整原先的開發(fā)架構(gòu),全部都轉(zhuǎn)到JDBC驅(qū)動(dòng)程序上來。橋接程序只是為數(shù)據(jù)庫(kù)開發(fā)爭(zhēng)取確定的時(shí)間。雖然那個(gè)轉(zhuǎn)型過程中的陣痛是較痛的,但確是不可避免的。長(zhǎng)痛不如短痛,筆者意見數(shù)據(jù)庫(kù)開發(fā)還是及早停止過渡為好。并在估計(jì)的情況下,把以前的開發(fā)架構(gòu)也停止調(diào)整,以采用真正意義上的JDBC驅(qū)動(dòng)程序。
JDBC雖然在一定程度上比ODBC操作簡(jiǎn)單,容易理解。但是世間萬物存在即有道理,并不是說JDBC好就所有的情況下都能使用JDBC,兩者之間沒有好壞之分,只是在特定的情況下能夠選取合適的實(shí)現(xiàn)方式即可。
總結(jié)
以上是生活随笔為你收集整理的JDBC和ODBC的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Push Mail技术(转)
- 下一篇: 删除 Zune 同步设置和历史记录教程