您好,登錄后才能下訂單哦!
小編給大家分享一下JDBC與ODBC有什么區(qū)別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
談到JDBC與ODBC的區(qū)別,JDBC和ODBC其實(shí)都是用來(lái)連接數(shù)據(jù)庫(kù)的啟動(dòng)程序。ODBC中文名字叫做開(kāi)放數(shù)據(jù)庫(kù)互聯(lián),是微軟技術(shù)人員開(kāi)發(fā)的開(kāi)放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立一組相關(guān)的規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)應(yīng)用程序編程接口。簡(jiǎn)單的說(shuō),ODBC就是應(yīng)用程序與數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行交互的工具。一個(gè)給予ODBC的應(yīng)用程序?qū)?shù)據(jù)庫(kù)的操作不依賴(lài)于人員的數(shù)據(jù)庫(kù)系統(tǒng),不支持與數(shù)據(jù)庫(kù)管理系統(tǒng)打交道,所有的數(shù)據(jù)庫(kù)操作由對(duì)應(yīng)的數(shù)據(jù)庫(kù)系統(tǒng)的ODBC驅(qū)動(dòng)程序來(lái)完成。從而可以實(shí)現(xiàn)以同一的方式來(lái)處理所有的數(shù)據(jù)庫(kù)。
而JDBC與ODBC類(lèi)似,也是一個(gè)應(yīng)用程序與數(shù)據(jù)庫(kù)進(jìn)行通信的中介。只是他們的開(kāi)發(fā)商不同而已。JDBC是由Sun公司向關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)廠商提供JDBC的規(guī)格與需求;然后各大廠商遵循標(biāo)準(zhǔn)規(guī)格設(shè)計(jì)出符合自己數(shù)據(jù)庫(kù)產(chǎn)品的JDBC驅(qū)動(dòng)程序。雖然JDBC與ODBC都可以實(shí)現(xiàn)類(lèi)似的功能,但是他們的開(kāi)發(fā)架構(gòu)不同,其實(shí)現(xiàn)細(xì)節(jié)上也有所差異。為此數(shù)據(jù)庫(kù)管理員必須要了解這方面的差異,并在工作中根據(jù)實(shí)際情況來(lái)選擇合適的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。
JDBC與ODBC的區(qū)別:JDBC的優(yōu)點(diǎn)。
JDBC應(yīng)用程序接口是JAVA程序語(yǔ)言內(nèi)針對(duì)數(shù)據(jù)存取所涉及的程序開(kāi)發(fā)接口,其內(nèi)部是由許多類(lèi)與接口構(gòu)成。而ODBC則是由C語(yǔ)言來(lái)開(kāi)發(fā)的。由于兩者開(kāi)發(fā)平臺(tái)的不同,為此開(kāi)發(fā)不同種各自的特點(diǎn)也就傳遞到了這連個(gè)數(shù)據(jù)庫(kù)啟動(dòng)程序中。根據(jù)筆者的了解,相對(duì)ODBC數(shù)據(jù)庫(kù)啟動(dòng)程序來(lái)說(shuō),JDBC有如下幾個(gè)優(yōu)點(diǎn)。若筆者概括的不夠全面的話,歡迎大家來(lái)補(bǔ)全。
1、JDBC要比ODBC容易理解。大家學(xué)過(guò)編程的也許會(huì)有一個(gè)直觀的感受,就是JAVA語(yǔ)言要比C語(yǔ)言好學(xué)的多。因?yàn)镴AVA語(yǔ)言的設(shè)計(jì)思路是面向?qū)ο蟮?,跟人的認(rèn)識(shí)思維比較接近,為此比較容易被人接受,學(xué)習(xí)起來(lái)也相對(duì)輕松一點(diǎn)。而C語(yǔ)言則就比較抽象了,跟人的認(rèn)識(shí)規(guī)律有一定的距離。為此他們開(kāi)發(fā)出來(lái)的產(chǎn)品也有類(lèi)似的特點(diǎn)。在ODBC中,雖然可以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互,但是實(shí)現(xiàn)起來(lái)比較復(fù)雜。如一個(gè)簡(jiǎn)單的查詢,也需要分為好幾塊內(nèi)容;而在ODBC驅(qū)動(dòng)程序內(nèi)部再去進(jìn)行整合,進(jìn)行一些復(fù)雜的操作。這不僅降低了數(shù)據(jù)庫(kù)啟動(dòng)程序的性能,而且也給程序開(kāi)發(fā)者開(kāi)發(fā)應(yīng)用程序帶來(lái)了一定的負(fù)面影響。而JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序在設(shè)計(jì)的時(shí)候就包含了大部分基本數(shù)據(jù)操作功能,為此在編寫(xiě)一些常規(guī)的數(shù)據(jù)庫(kù)操作語(yǔ)句時(shí),如查詢、更新等等,其所需要的代碼比ODBC要少的多。故從這方面來(lái)說(shuō),JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序要比ODBC容易理解。
2、JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是面向?qū)ο蟮?,完全遵循JAVA語(yǔ)言的優(yōu)良特性。通常情況下,只要有JAVA車(chē)功能需設(shè)計(jì)基礎(chǔ)的用戶都可以在最短時(shí)間內(nèi)了解JDBC驅(qū)動(dòng)程序的架構(gòu),比較容易上手,可以輕而易舉的開(kāi)發(fā)出強(qiáng)悍的數(shù)據(jù)庫(kù)應(yīng)用程序。而ODBC的話,由于其內(nèi)部功能復(fù)雜,代碼編寫(xiě)要求高。為此即使是一個(gè)C語(yǔ)言的高手,仍然需要花費(fèi)不少的時(shí)間去了解這個(gè)數(shù)據(jù)庫(kù)啟動(dòng)程序;在編寫(xiě)代碼的時(shí)候,還離不開(kāi)相關(guān)的參考書(shū)籍。
3、JDBC的移植性要比ODBC要好。通常情況下,安裝完ODBC驅(qū)動(dòng)程序之后,還需要經(jīng)過(guò)一定的配置才能夠使用。而不同的配置在不同數(shù)據(jù)庫(kù)服務(wù)器之間不能夠通用。也就是說(shuō),裝一次需要配置一次。但是JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序則不同。如果采用JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的話,則知需要選擇適當(dāng)?shù)腏DBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,就不需要進(jìn)行額外的配置。在安裝過(guò)程中,JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序會(huì)自己完成相關(guān)的配置。為此JDBC的移植性要比ODBC要好。
總之JDBC與ODBC都是數(shù)據(jù)庫(kù)的啟動(dòng)程序,它們的本質(zhì)是相同的,都是為了處理SQL語(yǔ)句而設(shè)計(jì)的。而且JDBC在設(shè)計(jì)的時(shí)候,其也是在ODBC的基礎(chǔ)上進(jìn)行設(shè)計(jì)的,并保留了ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的部分功能?;蛘哒f(shuō),我們可以把JDBC看作是ODBC的另一個(gè)高級(jí)版本也未嘗不可。JDBC主要在操作上、友好性上做了一定的改進(jìn)。
JDBC與ODBC的區(qū)別:什么時(shí)候采用JDBC?
雖然說(shuō)JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序比ODBC來(lái)說(shuō)具有不少的優(yōu)點(diǎn),但是也并不是說(shuō)在所有的情況下采用JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序都能夠起到不錯(cuò)的效果。數(shù)據(jù)庫(kù)管理員還需要根據(jù)企業(yè)的實(shí)際應(yīng)用環(huán)境來(lái)進(jìn)行選擇。通常情況下,如果符合下面幾種情況的任何一種,筆者建議采用JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。
一是采用Oracle公司的Oracle JDeveloper 10G來(lái)開(kāi)發(fā)應(yīng)用程序。JDeveloper 10G是Oracle公司提供的一個(gè)可視化的開(kāi)發(fā)環(huán)境。可以幫助數(shù)據(jù)庫(kù)管理員與開(kāi)發(fā)人員方便的完成一些復(fù)雜的功能。如數(shù)據(jù)庫(kù)開(kāi)發(fā)人員可以借這個(gè)工具來(lái)設(shè)計(jì)WEB應(yīng)用程序的網(wǎng)頁(yè)執(zhí)行流程;如可以用來(lái)開(kāi)發(fā)業(yè)務(wù)服務(wù)層組件;如可以在JSP與JClient應(yīng)用程序內(nèi)實(shí)現(xiàn)數(shù)據(jù)綁定功能等等。特別是在利用這個(gè)工具開(kāi)發(fā)業(yè)務(wù)服務(wù)層組件的時(shí)候,可以直接瀏覽與存取業(yè)務(wù)組件所對(duì)應(yīng)的數(shù)據(jù)。數(shù)據(jù)庫(kù)開(kāi)發(fā)人員不用等到應(yīng)用程序撰寫(xiě)好后才測(cè)試數(shù)據(jù)庫(kù)的存取功能。顯然這個(gè)特性讓數(shù)據(jù)庫(kù)開(kāi)發(fā)人員在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的時(shí)候格外的便利。而為了配合這個(gè)開(kāi)發(fā)工具,Oracle公司專(zhuān)門(mén)開(kāi)發(fā)了對(duì)應(yīng)的JDBC驅(qū)動(dòng)程序。為此如果數(shù)據(jù)庫(kù)開(kāi)發(fā)人員采用JDeveloper開(kāi)發(fā)工具的話,那么采用JDBC要比采用ODBC的兼容性要好。所以如果采用了這種開(kāi)發(fā)工具的話,***能夠采用JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序。
二是如果應(yīng)用程序采用的是JAVA開(kāi)發(fā)平臺(tái)的話,那么***使用JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序。其實(shí)JDeveloper采用的也是JAVA開(kāi)發(fā)平臺(tái)。這主要是因?yàn)槿绻鸍AVA程序直接調(diào)用ODBC的C語(yǔ)言應(yīng)用程序接口時(shí),比較容易產(chǎn)生安全方面的問(wèn)題。如Java語(yǔ)言是不采用指針的(因?yàn)橹羔樀奶幚硇时容^慢),而ODBC所采用的C語(yǔ)言卻使用了大量的指針。為此如果使用JAVA語(yǔ)言平臺(tái)來(lái)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,若采用ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的話,就不那么合適了。另外由于JDBC也是JAVA語(yǔ)言開(kāi)發(fā)的,所以其兼容性也會(huì)好許多。為此筆者建議,如果數(shù)據(jù)庫(kù)開(kāi)發(fā)人員采用的是JAVA語(yǔ)言開(kāi)發(fā)平臺(tái)的話,那么***采用JDBC驅(qū)動(dòng)程序,而不是ODBC驅(qū)動(dòng)程序。
在其他的情況下,數(shù)據(jù)庫(kù)管理員與開(kāi)發(fā)人員可以根據(jù)自己的習(xí)慣來(lái)選擇合適的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。
JDBC與ODBC的區(qū)別:能否從ODBC順利過(guò)渡到JDBC?
也許數(shù)據(jù)庫(kù)管理員以前采用的是ODBC驅(qū)動(dòng)程序,而如果數(shù)據(jù)庫(kù)管理員現(xiàn)在需要采用JDBC驅(qū)動(dòng)程序,那么能否實(shí)現(xiàn)順利過(guò)渡呢?答案是肯定的。在JDBC驅(qū)動(dòng)程序中有一類(lèi)叫作JDBC-ODBC橋接啟動(dòng)程序。這種類(lèi)型的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序其底層是通過(guò)ODBC驅(qū)動(dòng)程序來(lái)連接數(shù)據(jù)庫(kù)的。如果原先的應(yīng)用程序是基于ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的,或者數(shù)據(jù)庫(kù)沒(méi)有提供對(duì)應(yīng)的JDBC驅(qū)動(dòng)程序,則數(shù)據(jù)庫(kù)管理員可以利用JDBC-ODBC橋接驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。也就是說(shuō),橋接驅(qū)動(dòng)程序可以利用現(xiàn)有的ODBC驅(qū)動(dòng)程序來(lái)存取關(guān)系型數(shù)據(jù)庫(kù)。為此者不僅可以保留先前的開(kāi)發(fā)架構(gòu)(通過(guò)ODBC來(lái)存取數(shù)據(jù)),還可以立即使用JAVA作為新的開(kāi)發(fā)環(huán)境,從而實(shí)現(xiàn)ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序到JDBC的順利轉(zhuǎn)型。
不過(guò)在采用這種橋接驅(qū)動(dòng)程序的時(shí)候,需要注意幾個(gè)問(wèn)題。一是這個(gè)橋接驅(qū)動(dòng)程序仍然需要用到ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。因?yàn)闃蚪域?qū)動(dòng)程序直接聯(lián)系的對(duì)象是ODBC驅(qū)動(dòng)程序,然后再通過(guò)ODBC驅(qū)動(dòng)程序去訪問(wèn)數(shù)據(jù)庫(kù)。為此在客戶端必須先安裝并配置好ODBC驅(qū)動(dòng)程序。如果采用的是三層式的開(kāi)發(fā)結(jié)構(gòu),也需要安裝ODBC驅(qū)動(dòng)程序。其次,在這種模式下,應(yīng)用程序先調(diào)用JDBC,然后再通過(guò)JDBC調(diào)用ODBC,***再跟數(shù)據(jù)庫(kù)進(jìn)行通信。顯然其中間多了幾個(gè)環(huán)節(jié)。由于其中間環(huán)節(jié)比較多,但數(shù)據(jù)訪問(wèn)出現(xiàn)問(wèn)題的時(shí)候,就不怎么好查問(wèn)題。這就好像一道水管,如果中間的接口多了的話,則發(fā)生漏水的幾率就比較高。如果真的發(fā)生漏水的話,則查詢漏水點(diǎn)的時(shí)候也會(huì)比較困難。為此筆者認(rèn)為,采用橋接類(lèi)型的JDBC驅(qū)動(dòng)程序只是權(quán)宜之計(jì)。在適當(dāng)?shù)臅r(shí)候,數(shù)據(jù)庫(kù)開(kāi)發(fā)人員還是需要調(diào)整原先的開(kāi)發(fā)架構(gòu),全部都轉(zhuǎn)到JDBC驅(qū)動(dòng)程序上來(lái)。橋接程序只是為數(shù)據(jù)庫(kù)開(kāi)發(fā)人員爭(zhēng)取一定的時(shí)間。雖然這個(gè)轉(zhuǎn)型過(guò)程中的陣痛是比較痛的,但確是不可避免的。長(zhǎng)痛不如短痛,筆者建議數(shù)據(jù)庫(kù)開(kāi)發(fā)人員還是及早進(jìn)行過(guò)渡為好。并在可能的情況下,把以前的開(kāi)發(fā)架構(gòu)也進(jìn)行調(diào)整,以采用真正意義上的JDBC驅(qū)動(dòng)程序。
以上是“JDBC與ODBC有什么區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。