新聞中心
談到JDBC與ODBC的區(qū)別,JDBC和ODBC其實都是用來連接數(shù)據(jù)庫的啟動程序。ODBC中文名字叫做開放數(shù)據(jù)庫互聯(lián),是微軟技術(shù)人員開發(fā)的開放服務結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個組成部分,它建立一組相關(guān)的規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標準應用程序編程接口。簡單的說,ODBC就是應用程序與數(shù)據(jù)庫系統(tǒng)進行交互的工具。一個給予ODBC的應用程序?qū)?shù)據(jù)庫的操作不依賴于人員的數(shù)據(jù)庫系統(tǒng),不支持與數(shù)據(jù)庫管理系統(tǒng)打交道,所有的數(shù)據(jù)庫操作由對應的數(shù)據(jù)庫系統(tǒng)的ODBC驅(qū)動程序來完成。從而可以實現(xiàn)以同一的方式來處理所有的數(shù)據(jù)庫。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的即墨網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
而JDBC與ODBC類似,也是一個應用程序與數(shù)據(jù)庫進行通信的中介。只是他們的開發(fā)商不同而已。JDBC是由Sun公司向關(guān)系型數(shù)據(jù)庫系統(tǒng)廠商提供JDBC的規(guī)格與需求;然后各大廠商遵循標準規(guī)格設計出符合自己數(shù)據(jù)庫產(chǎn)品的JDBC驅(qū)動程序。雖然JDBC與ODBC都可以實現(xiàn)類似的功能,但是他們的開發(fā)架構(gòu)不同,其實現(xiàn)細節(jié)上也有所差異。為此數(shù)據(jù)庫管理員必須要了解這方面的差異,并在工作中根據(jù)實際情況來選擇合適的數(shù)據(jù)庫驅(qū)動程序。
JDBC與ODBC的區(qū)別:JDBC的優(yōu)點。
JDBC應用程序接口是JAVA程序語言內(nèi)針對數(shù)據(jù)存取所涉及的程序開發(fā)接口,其內(nèi)部是由許多類與接口構(gòu)成。而ODBC則是由C語言來開發(fā)的。由于兩者開發(fā)平臺的不同,為此開發(fā)不同種各自的特點也就傳遞到了這連個數(shù)據(jù)庫啟動程序中。根據(jù)筆者的了解,相對ODBC數(shù)據(jù)庫啟動程序來說,JDBC有如下幾個優(yōu)點。若筆者概括的不夠全面的話,歡迎大家來補全。
1、JDBC要比ODBC容易理解。大家學過編程的也許會有一個直觀的感受,就是JAVA語言要比C語言好學的多。因為JAVA語言的設計思路是面向?qū)ο蟮?,跟人的認識思維比較接近,為此比較容易被人接受,學習起來也相對輕松一點。而C語言則就比較抽象了,跟人的認識規(guī)律有一定的距離。為此他們開發(fā)出來的產(chǎn)品也有類似的特點。在ODBC中,雖然可以實現(xiàn)與數(shù)據(jù)庫的交互,但是實現(xiàn)起來比較復雜。如一個簡單的查詢,也需要分為好幾塊內(nèi)容;而在ODBC驅(qū)動程序內(nèi)部再去進行整合,進行一些復雜的操作。這不僅降低了數(shù)據(jù)庫啟動程序的性能,而且也給程序開發(fā)者開發(fā)應用程序帶來了一定的負面影響。而JDBC數(shù)據(jù)庫啟動程序在設計的時候就包含了大部分基本數(shù)據(jù)操作功能,為此在編寫一些常規(guī)的數(shù)據(jù)庫操作語句時,如查詢、更新等等,其所需要的代碼比ODBC要少的多。故從這方面來說,JDBC數(shù)據(jù)庫啟動程序要比ODBC容易理解。
2、JDBC數(shù)據(jù)庫驅(qū)動程序是面向?qū)ο蟮?,完全遵循JAVA語言的優(yōu)良特性。通常情況下,只要有JAVA車功能需設計基礎的用戶都可以在最短時間內(nèi)了解JDBC驅(qū)動程序的架構(gòu),比較容易上手,可以輕而易舉的開發(fā)出強悍的數(shù)據(jù)庫應用程序。而ODBC的話,由于其內(nèi)部功能復雜,代碼編寫要求高。為此即使是一個C語言的高手,仍然需要花費不少的時間去了解這個數(shù)據(jù)庫啟動程序;在編寫代碼的時候,還離不開相關(guān)的參考書籍。
3、JDBC的移植性要比ODBC要好。通常情況下,安裝完ODBC驅(qū)動程序之后,還需要經(jīng)過一定的配置才能夠使用。而不同的配置在不同數(shù)據(jù)庫服務器之間不能夠通用。也就是說,裝一次需要配置一次。但是JDBC數(shù)據(jù)庫驅(qū)動程序則不同。如果采用JDBC數(shù)據(jù)庫驅(qū)動程序的話,則知需要選擇適當?shù)腏DBC數(shù)據(jù)庫驅(qū)動程序,就不需要進行額外的配置。在安裝過程中,JDBC數(shù)據(jù)庫驅(qū)動程序會自己完成相關(guān)的配置。為此JDBC的移植性要比ODBC要好。
總之JDBC與ODBC都是數(shù)據(jù)庫的啟動程序,它們的本質(zhì)是相同的,都是為了處理SQL語句而設計的。而且JDBC在設計的時候,其也是在ODBC的基礎上進行設計的,并保留了ODBC數(shù)據(jù)庫驅(qū)動程序的部分功能。或者說,我們可以把JDBC看作是ODBC的另一個高級版本也未嘗不可。JDBC主要在操作上、友好性上做了一定的改進。
JDBC與ODBC的區(qū)別:什么時候采用JDBC?
雖然說JDBC數(shù)據(jù)庫啟動程序比ODBC來說具有不少的優(yōu)點,但是也并不是說在所有的情況下采用JDBC數(shù)據(jù)庫啟動程序都能夠起到不錯的效果。數(shù)據(jù)庫管理員還需要根據(jù)企業(yè)的實際應用環(huán)境來進行選擇。通常情況下,如果符合下面幾種情況的任何一種,筆者建議采用JDBC數(shù)據(jù)庫驅(qū)動程序。
一是采用Oracle公司的Oracle JDeveloper 10G來開發(fā)應用程序。JDeveloper 10G是Oracle公司提供的一個可視化的開發(fā)環(huán)境。可以幫助數(shù)據(jù)庫管理員與開發(fā)人員方便的完成一些復雜的功能。如數(shù)據(jù)庫開發(fā)人員可以借這個工具來設計WEB應用程序的網(wǎng)頁執(zhí)行流程;如可以用來開發(fā)業(yè)務服務層組件;如可以在JSP與JClient應用程序內(nèi)實現(xiàn)數(shù)據(jù)綁定功能等等。特別是在利用這個工具開發(fā)業(yè)務服務層組件的時候,可以直接瀏覽與存取業(yè)務組件所對應的數(shù)據(jù)。數(shù)據(jù)庫開發(fā)人員不用等到應用程序撰寫好后才測試數(shù)據(jù)庫的存取功能。顯然這個特性讓數(shù)據(jù)庫開發(fā)人員在開發(fā)數(shù)據(jù)庫應用程序的時候格外的便利。而為了配合這個開發(fā)工具,Oracle公司專門開發(fā)了對應的JDBC驅(qū)動程序。為此如果數(shù)據(jù)庫開發(fā)人員采用JDeveloper開發(fā)工具的話,那么采用JDBC要比采用ODBC的兼容性要好。所以如果采用了這種開發(fā)工具的話,***能夠采用JDBC數(shù)據(jù)庫啟動程序。
二是如果應用程序采用的是JAVA開發(fā)平臺的話,那么***使用JDBC數(shù)據(jù)庫啟動程序。其實JDeveloper采用的也是JAVA開發(fā)平臺。這主要是因為如果JAVA程序直接調(diào)用ODBC的C語言應用程序接口時,比較容易產(chǎn)生安全方面的問題。如Java語言是不采用指針的(因為指針的處理效率比較慢),而ODBC所采用的C語言卻使用了大量的指針。為此如果使用JAVA語言平臺來開發(fā)數(shù)據(jù)庫應用程序,若采用ODBC數(shù)據(jù)庫驅(qū)動程序的話,就不那么合適了。另外由于JDBC也是JAVA語言開發(fā)的,所以其兼容性也會好許多。為此筆者建議,如果數(shù)據(jù)庫開發(fā)人員采用的是JAVA語言開發(fā)平臺的話,那么***采用JDBC驅(qū)動程序,而不是ODBC驅(qū)動程序。
在其他的情況下,數(shù)據(jù)庫管理員與開發(fā)人員可以根據(jù)自己的習慣來選擇合適的數(shù)據(jù)庫驅(qū)動程序。
JDBC與ODBC的區(qū)別:能否從ODBC順利過渡到JDBC?
也許數(shù)據(jù)庫管理員以前采用的是ODBC驅(qū)動程序,而如果數(shù)據(jù)庫管理員現(xiàn)在需要采用JDBC驅(qū)動程序,那么能否實現(xiàn)順利過渡呢?答案是肯定的。在JDBC驅(qū)動程序中有一類叫作JDBC-ODBC橋接啟動程序。這種類型的JDBC數(shù)據(jù)庫驅(qū)動程序其底層是通過ODBC驅(qū)動程序來連接數(shù)據(jù)庫的。如果原先的應用程序是基于ODBC數(shù)據(jù)庫驅(qū)動程序的,或者數(shù)據(jù)庫沒有提供對應的JDBC驅(qū)動程序,則數(shù)據(jù)庫管理員可以利用JDBC-ODBC橋接驅(qū)動程序來實現(xiàn)。也就是說,橋接驅(qū)動程序可以利用現(xiàn)有的ODBC驅(qū)動程序來存取關(guān)系型數(shù)據(jù)庫。為此者不僅可以保留先前的開發(fā)架構(gòu)(通過ODBC來存取數(shù)據(jù)),還可以立即使用JAVA作為新的開發(fā)環(huán)境,從而實現(xiàn)ODBC數(shù)據(jù)庫驅(qū)動程序到JDBC的順利轉(zhuǎn)型。
不過在采用這種橋接驅(qū)動程序的時候,需要注意幾個問題。一是這個橋接驅(qū)動程序仍然需要用到ODBC數(shù)據(jù)庫驅(qū)動程序。因為橋接驅(qū)動程序直接聯(lián)系的對象是ODBC驅(qū)動程序,然后再通過ODBC驅(qū)動程序去訪問數(shù)據(jù)庫。為此在客戶端必須先安裝并配置好ODBC驅(qū)動程序。如果采用的是三層式的開發(fā)結(jié)構(gòu),也需要安裝ODBC驅(qū)動程序。其次,在這種模式下,應用程序先調(diào)用JDBC,然后再通過JDBC調(diào)用ODBC,***再跟數(shù)據(jù)庫進行通信。顯然其中間多了幾個環(huán)節(jié)。由于其中間環(huán)節(jié)比較多,但數(shù)據(jù)訪問出現(xiàn)問題的時候,就不怎么好查問題。這就好像一道水管,如果中間的接口多了的話,則發(fā)生漏水的幾率就比較高。如果真的發(fā)生漏水的話,則查詢漏水點的時候也會比較困難。為此筆者認為,采用橋接類型的JDBC驅(qū)動程序只是權(quán)宜之計。在適當?shù)臅r候,數(shù)據(jù)庫開發(fā)人員還是需要調(diào)整原先的開發(fā)架構(gòu),全部都轉(zhuǎn)到JDBC驅(qū)動程序上來。橋接程序只是為數(shù)據(jù)庫開發(fā)人員爭取一定的時間。雖然這個轉(zhuǎn)型過程中的陣痛是比較痛的,但確是不可避免的。長痛不如短痛,筆者建議數(shù)據(jù)庫開發(fā)人員還是及早進行過渡為好。并在可能的情況下,把以前的開發(fā)架構(gòu)也進行調(diào)整,以采用真正意義上的JDBC驅(qū)動程序。
本文名稱:JDBC與ODBC的區(qū)別與應用
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/ccdjiec.html


咨詢
建站咨詢
