国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

JDBC之接口技術(shù)

2019-11-18 14:05:03
字體:
供稿:網(wǎng)友

  作者:鄭林峰 張公忠



JDBC是一種可用于執(zhí)行SQL語句的javaAPI(applicationPRogrammingInterface應(yīng)用程序設(shè)計接口)。它由一些Java語言編寫的類和界面組成。JDBC為數(shù)據(jù)庫應(yīng)用開發(fā)人員、數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。

一、ODBC到JDBC的發(fā)展歷程
說到JDBC,很輕易讓人聯(lián)想到另一個十分熟悉的字眼“ODBC”。它們之間有沒有聯(lián)系呢?假如有,那么它們之間又是怎樣的關(guān)系呢?

ODBC是OpenDatabaseConnectivity的英文簡寫。它是一種用來在相關(guān)或不相關(guān)的數(shù)據(jù)庫治理系統(tǒng)(DBMS)中存取數(shù)據(jù)的,用C語言實現(xiàn)的,標(biāo)準(zhǔn)應(yīng)用程序數(shù)據(jù)接口。通過ODBCAPI,應(yīng)用程序可以存取保存在多種不同數(shù)據(jù)庫治理系統(tǒng)(DBMS)中的數(shù)據(jù),而不論每個DBMS使用了何種數(shù)據(jù)存儲格式和編程接口。

1.ODBC的結(jié)構(gòu)模型
ODBC的結(jié)構(gòu)包括四個主要部分:應(yīng)用程序接口、驅(qū)動器治理器、數(shù)據(jù)庫驅(qū)動器和數(shù)據(jù)源。
應(yīng)用程序接口:屏蔽不同的ODBC數(shù)據(jù)庫驅(qū)動器之間函數(shù)調(diào)用的差別,為用戶提供統(tǒng)一的SQL編程接口。
驅(qū)動器治理器:為應(yīng)用程序裝載數(shù)據(jù)庫驅(qū)動器。
數(shù)據(jù)庫驅(qū)動器:實現(xiàn)ODBC的函數(shù)調(diào)用,提供對特定數(shù)據(jù)源的SQL請求。假如需要,數(shù)據(jù)庫驅(qū)動器將修改應(yīng)用程序的請求,使得請求符合相關(guān)的DBMS所支持的文法。
數(shù)據(jù)源:由用戶想要存取的數(shù)據(jù)以及與它相關(guān)的操作系統(tǒng)、DBMS和用于訪問DBMS的網(wǎng)絡(luò)平臺組成。
雖然ODBC驅(qū)動器治理器的主要目的是加載數(shù)據(jù)庫驅(qū)動器,以便ODBC函數(shù)調(diào)用,但是數(shù)據(jù)庫驅(qū)動器本身也執(zhí)行ODBC函數(shù)調(diào)用,并與數(shù)據(jù)庫相互配合。因此當(dāng)應(yīng)用系統(tǒng)發(fā)出調(diào)用與數(shù)據(jù)源進(jìn)行連接時,數(shù)據(jù)庫驅(qū)動器能治理通信協(xié)議。當(dāng)建立起與數(shù)據(jù)源的連接時,數(shù)據(jù)庫驅(qū)動器便能處理應(yīng)用系統(tǒng)向DBMS發(fā)出的請求,對分析或發(fā)自數(shù)據(jù)源的設(shè)計進(jìn)行必要的翻譯,并將結(jié)果返回給應(yīng)用系統(tǒng)。

2.JDBC的誕生

自從Java語言于1995年5月正式公布以來,Java風(fēng)靡全球。出現(xiàn)大量的用java語言編寫的程序,其中也包括數(shù)據(jù)庫應(yīng)用程序。由于沒有一個Java語言的API,編程人員不得不在Java程序中加入C語言的ODBC函數(shù)調(diào)用。這就使很多Java的優(yōu)秀特性無法充分發(fā)揮,比如平臺無關(guān)性、面向?qū)ο筇匦缘取kS著越來越多的編程人員對Java語言的日益喜愛,越來越多的公司在Java程序開發(fā)上投入的精力日益增加,對java語言接口的訪問數(shù)據(jù)庫的API的要求越來越強烈。也由于ODBC的有其不足之處,比如它并不輕易使用,沒有面向?qū)ο蟮奶匦缘鹊龋琒UN公司決定開發(fā)一Java語言為接口的數(shù)據(jù)庫應(yīng)用程序開發(fā)接口。在JDK1.x版本中,JDBC只是一個可選部件,到了JDK1.1公布時,SQL類包(也就是JDBCAPI)就成為Java語言的標(biāo)準(zhǔn)部件。

二、JDBC技術(shù)概述

JDBC是一種可用于執(zhí)行SQL語句的JavaAPI(ApplicationProgrammingInterface,應(yīng)用程序設(shè)計接口)。它由一些Java語言寫的類、界面組成。JDBC給數(shù)據(jù)庫應(yīng)用開發(fā)人員、數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。

通過使用JDBC,開發(fā)人員可以很方便地將SQL語句傳送給幾乎任何一種數(shù)據(jù)庫。也就是說,開發(fā)人員可以不必寫一個程序訪問Sybase,寫另一個程序訪問Oracle,再寫一個程序訪問Microsoft的SQLServer。用JDBC寫的程序能夠自動地將SQL語句傳送給相應(yīng)的數(shù)據(jù)庫治理系統(tǒng)(DBMS)。不但如此,使用Java編寫的應(yīng)用程序可以在任何支持Java的平臺上運行,不必在不同的平臺上編寫不同的應(yīng)用。Java和JDBC的結(jié)合可以讓開發(fā)人員在開發(fā)數(shù)據(jù)庫應(yīng)用時真正實現(xiàn)“WriteOnce,RunEverywhere!”
Java具有健壯、安全、易用等特性,而且支持自動網(wǎng)上下載,本質(zhì)上是一種很好的數(shù)據(jù)庫應(yīng)用的編程語言。它所需要的是Java應(yīng)用如何同各種各樣的數(shù)據(jù)庫連接,JDBC正是實現(xiàn)這種連接的要害。

JDBC擴展了Java的能力,如使用Java和JDBCAPI就可以公布一個Web頁,頁中帶有能訪問遠(yuǎn)端數(shù)據(jù)庫的Ap?plet。或者企業(yè)可以通過JDBC讓全部的職工(他們可以使用不同的操作系統(tǒng),如Windwos,Machintosh和UNIX)在In?tranet上連接到幾個全球數(shù)據(jù)庫上,而這幾個全球數(shù)據(jù)庫可以是不相同的。隨著越來越多的程序開發(fā)人員使用Java語言,對Java訪問數(shù)據(jù)庫易操作性的需求越來越強烈。

MIS治理人員喜歡Java和JDBC,因為這樣可以更輕易經(jīng)濟(jì)地公布信息。各種已經(jīng)安裝在數(shù)據(jù)庫中的事務(wù)處理都將繼續(xù)正常運行,甚至這些事務(wù)處理是存儲在不同的數(shù)據(jù)庫治理系統(tǒng)中;而對新的數(shù)據(jù)庫應(yīng)用來說,開發(fā)時間將縮短,安裝和版本升級將大大簡化。程序員可以編寫或改寫一個程序,然后將它放在服務(wù)器上,而每個用戶都可以訪問服務(wù)器得到最新的版本。對于信息服務(wù)行業(yè),Java和JDBC提供了一種很好的向外界用戶更新信息的方法。

1.JDBC的任務(wù)
簡單地說,JDBC能完成下列三件事:
1)同一個數(shù)據(jù)庫建立連接;
2)向數(shù)據(jù)庫發(fā)送SQL語句;
3)處理數(shù)據(jù)庫返回的結(jié)果。
2.JDBC?一種底層的API
JDBC是一種底層API,這意味著它將直接調(diào)用SQL命令。JDBC完全勝任這個任務(wù),而且比其他數(shù)據(jù)庫互聯(lián)更加輕易實現(xiàn)。同時它也是構(gòu)造高層API和數(shù)據(jù)庫開發(fā)工具的基礎(chǔ)。高層API和數(shù)據(jù)庫開發(fā)工具應(yīng)該是用戶界面更加友好,使用更加方便,更易于理解的。但所有這樣的API將最終被翻譯為象JDBC這樣的底層API。目前兩種基于JDBC的高層API正處在開發(fā)階段。
1)SQL語言嵌入Java的預(yù)處理器。雖然DBMS已經(jīng)實現(xiàn)了SQL查詢,但JDBC要求SQL語句被當(dāng)作字符串參數(shù)傳送給Java程序。而嵌入式SQL預(yù)處理器答應(yīng)程序員將SQL語句混用:Java變量可以在SQL語句中使用,來接收或提供數(shù)值。然后SQL的預(yù)處理器將把這種Java/SQL混用的程序翻譯成帶有JDBCAPI的Java程序。
2)實現(xiàn)從關(guān)系數(shù)據(jù)庫到Java類的直接映射。Javasoft和其他公司已經(jīng)公布要實現(xiàn)這一技術(shù)。在這種“對象/關(guān)系”映射中,表的每一行都將變成這類的一個實例,每一列的值對應(yīng)實例的一個屬性。程序員可以直接操作Java的對象;而存取所需要的SQL調(diào)用將在內(nèi)部直接產(chǎn)生。還可以實現(xiàn)更加復(fù)雜的映射,比如多張表的行在一個Java的類中實現(xiàn)。
隨著大家對JDBC愛好的不斷濃厚,越來越多的開發(fā)人員已經(jīng)開始利用JDBC為基礎(chǔ)的工具進(jìn)行開發(fā)。這使開發(fā)工作變得輕易。同時,程序員也正在開發(fā)對最終用戶來說訪問數(shù)據(jù)庫更加輕易的應(yīng)用程序。

3.JDBC和ODBC及其他API的比較

到目前為止,微軟的ODBC可能是用得最廣泛的訪問關(guān)系數(shù)據(jù)庫的API。它提供了連接幾乎任何一種平臺、任何一種數(shù)據(jù)庫的能力。那么,為什么不直接從Java中直接使用ODBC呢?

回答是可以從Java中使用ODBC,但最好在JDBC的協(xié)助下,用JDBC-ODBC橋接器實現(xiàn)。那么,為什么需要JDBC呢?要回答這個問題,有這么幾個方面:

1)ODBC并不適合在Java中直接使用。ODBC是一個C語言實現(xiàn)的API,從Java程序調(diào)用本地的C程序會帶來一系列類似安全性、完整性、健壯性的缺點。

2)其次,完全精確地實現(xiàn)從C代碼ODBC到JavaAPI寫的ODBC的翻譯也并不令人滿足。比如,Java沒有指針,而ODBC中大量地使用了指針,包括極易出錯的空指針“void*”。因此,對Java程序員來說,把JDBC設(shè)想成將ODBC轉(zhuǎn)換成面向?qū)ο蟮腁PI是很自然的。

3)ODBC并不輕易學(xué)習(xí),它將簡單特性和復(fù)雜特性混雜在一起,甚至對非常簡單的查詢都有復(fù)雜的選項。而JDBC剛好相反,它保持了簡單事物的簡單性,但又答應(yīng)復(fù)雜的特性。
4)JDBC這樣的JavaAPI對于純Java方案來說是必須的。當(dāng)使用ODBC時,人們必須在每一臺客戶機上安裝ODBC驅(qū)動器和驅(qū)動治理器。假如JDBC驅(qū)動器是完全用Java語言實現(xiàn)的話,那么JDBC的代碼就可以自動的下載和安裝,并保證其安全性,而且,這將適應(yīng)任何Java平臺,從網(wǎng)絡(luò)計算機NC到大型主機Mainframe。
總而言之,JDBCAPI是能體現(xiàn)SQL最基本抽象概念的、最直接的Java接口。它建構(gòu)在ODBC的基礎(chǔ)上,因此,熟悉ODBC的程序員將發(fā)現(xiàn)學(xué)習(xí)JDBC非常輕易。JDBC保持了ODBC的基本設(shè)計特征。實際上,這兩種接口都是基于X/OPENSQL的調(diào)用級接口(CLI)。它們的最大的不同是JDBC是基于Java的風(fēng)格和優(yōu)點,并強化了Java的風(fēng)格和優(yōu)點。
最近,微軟又推出了除了ODBC以外的新的API,如RDO,ADO和OLEDB。這些API事實上在很多方面上同JDBC一樣朝著相同的方向努力,也就是努力成為一個面向?qū)ο蟮模贠DBC的類接口。然而,這些接口目前并不能代替ODBC,尤其在ODBC驅(qū)動器已經(jīng)在市場完全形成的時候,更重要的是它們只是ODBC的“漂亮的包裝”。

4.JDBC兩層模型和三層模型

JDBC支持兩層模型,也支持三層模型訪問數(shù)據(jù)庫。
如圖3所示,兩層模型中,一個java Appple或者一個JA-va應(yīng)用直接同數(shù)據(jù)庫連接。這就需要能直接被訪問的數(shù)據(jù)庫進(jìn)行連接的JDBC驅(qū)動器。用戶的SQL語句被傳送給數(shù)據(jù)庫,而這些語句執(zhí)行的結(jié)果將被傳回給用戶。數(shù)據(jù)庫可以在同一機器上,也可以另一機器上通過網(wǎng)絡(luò)進(jìn)行連接。這被稱為“Client/Server”結(jié)構(gòu),用戶的計算機作為Client,運行數(shù)據(jù)庫的計算機作為Server。這個網(wǎng)絡(luò)可是intranet,比如連接全體雇員的企業(yè)內(nèi)部網(wǎng),當(dāng)然也可以是internet。

如圖4所示,在三層模型中,命令將被發(fā)送到服務(wù)的“中間層”,而“中間層”將SQL語句發(fā)送到數(shù)據(jù)庫。數(shù)據(jù)庫處理SQL語句并將結(jié)果返回“中間層”,然后“中間層”將它們 返回用戶。MIS治理員將發(fā)現(xiàn)三層模型很有吸引力,因為“中間層”可以進(jìn)行對訪問的控制并協(xié)同數(shù)據(jù)庫的更新,另一個優(yōu)勢就是假如有一個“中間層”用戶就可以使用一個易用的高層的API,這個API可以由“中間層”進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成底層的調(diào)用。而且,在許多情況下,三層模型可以提供更好的性能。

到目前為止,“中間層”通常還是用C或C++實現(xiàn),以保證其高性能。但隨著優(yōu)化編譯器的引入,將java的字節(jié)碼轉(zhuǎn)換成高效的機器碼,用java來實現(xiàn)“中間層”將越來越實際。而JDBC是答應(yīng)從一個java“中間層”訪問數(shù)據(jù)庫的要害。

上一篇:JDK1.1專題

下一篇:JDBC中的中文處理

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产卡一卡二卡三| 日本在线视频www鲁啊鲁| 99在线欧洲视频| 国产理论在线观看| 最近免费中文字幕在线第一页 | 五月综合激情在线| 中文字幕视频在线| 国产精品入口麻豆免费观看| 天天草天天草| 久久精品亚洲7777影院| 国产视频三级在线观看播放| 国产卡二和卡三的视频| 中文字幕有码在线视频| av网站大全在线| 国产九九九九| 精品一区二区三区免费站| 亚洲综合激情六月婷婷在线观看| 天天草天天操| 国产三级视频| 永久免费av网站| 国产丝袜在线| 国产美女视频网站| 在线一区二区三区精品| 黄色一级视频网站| 伊人影院在线观看| 91欧洲在线视精品在亚洲| 欧美精品一区二区三区免费| 最新中文字幕在线| 精品一二三四| 国产午夜精品一区理论片| 亚洲а∨精品天堂在线| 国产免费福利网站| аⅴ成人天堂中文在线| 91www在线观看| 国产农村av| 国产女人在线观看| 国产麻豆免费| 欧美色欧美亚洲另类二区精品| 国产黄视频网站| 国产免费黄网站| free性亚洲| 精品一区二区观看| 中文字幕在线视频观看| 丁香婷婷在线| а√最新版在线天堂| sese在线视频| 国产黄在线播放| 精品网站www| 在线观看av网站永久| 国产导航在线| 精品亚洲综合| 亚洲精品影视在线| 国产成人综合亚洲欧美在| 国产精品jvid在线观看| 天天爱天天色| 黄色网页网址在线免费| 黄色毛片在线| 国产一区二区三区四区尤物| 欧美成人亚洲高清在线观看| 在线免费看黄网站| 午夜影院免费看| 福利视频网站导航| 国产精品久久久久久精| 日韩在线天堂| 欧洲有码在线视频| 国产特级嫩嫩嫩bbb| 亚洲成人av高清| 久久五月精品| 国产在线观看色| 精品999视频| www.久草.com| 国产精品69xx| 免费a级在线播放| 最新黄网在线观看| 欧美一级久久久久久久久大| 国产偷倩在线播放| 夜夜爽视频导航| 国产精品久久在线| 日本高清中文字幕二区在线| 国产aa视频| 激情丁香在线| 国产91在线视频蝌蚪| xxx国产精品| 国产小视频在线高清播放| 四虎影院成人| 91午夜在线| 国产三级在线看| 国产乱子视频| 91超碰在线免费| 国产在线日本| 九九精品九九| 免费看的毛片| 亚洲欧美精选| 亚洲欧美综合乱码精品成人网| 99在线免费视频| 国产区在线看| 超碰国产在线| 国产中文在线视频| av文字幕在线观看| av人人综合网| 香蕉视频在线观看网站| 欧美性xxxx交| 伊人国产在线看一| 在线免费观看你懂的| 99热免费在线观看| 91www在线观看| 国产欧美一区二区三区小说| 精品剧情v国产在线观看| 国产在线超碰| 久久国产热视频| 欧美啪啪精品| 精品资源在线看| 国产美女在线一区二区三区| 国产中文第一页| 天堂亚洲精品| 91美女在线| 狠狠干在线视频| 91网页在线观看| a视频在线看| 国产在线精品一区二区不卡| 国产理论在线观看| 国产调教视频在线观看| 午夜在线视频播放| 欧美日韩视频精品二区| 九色自拍视频| 国产精品剧情一区二区三区| 99热播在线观看| 国产男女无套在线播放| 国产网红在线| 亚洲va国产日韩欧美精品色婷婷| 成人无遮挡免费网站视频在线观看| 国产亚av手机在线观看| 国产精品入口麻豆免费观看| 国产写真视频在线观看| 精品日韩av| 日本一本久久| 91av福利| 91久久麻豆| 成人无遮挡免费网站视频在线观看| 97影院理论午夜| 麻豆精品视频入口| 国产精品美女视频免费观看软件 | 精品国产二区三区| 99在线免费视频| 国产小视频免费在线网址| 人人澡人人爽| 国产精品久久久久一区二区国产| 人人九九精品| 中文产幕区在线观看| 久草.com| 在线观看午夜av| 国产福利视频在线观看| 国产在线更新| 青青草在线免费观看| 日本国产在线| 精品女厕厕露p撒尿| 国产精品伦理一区二区三区 | 永久av在线| 天天av天天爽| 国内外激情在线| 伊人久久青青草| 97在线超碰| 四虎国产精品永久| 精品女厕厕露p撒尿| 国产人成高清视频观看| 国产色在线播放| 午夜视频在线看| 免费观看一二区视频网站| 亚洲精品在线视频免费| 精品999视频| 夜夜爽视频导航| jizz在线视频| 黄网站在线观看高清免费| 2018中文字幕在线观看| 国产对白在线| 伊人春色在线| 亚洲成人av在线影院| 日本高清中文字幕二区在线| av高清在线| 亚洲成人电视网| 国产在线观看a视频| 国产三级免费观看| 国产精品18久久久久久久久久| 国产va在线观看| 天天激情综合| 国产精品一卡二卡三卡| 最近中文字幕在线中文视频| 国产区卡一卡二卡三乱码免费| 18av在线视频| 四虎精品视频| 国产精品欧美色图| 日本高清中文字幕二区在线| 国产美女在线一区二区三区| 中文字幕在线播放网址| 国产视频精选在线| www.狠狠色.com| 精品入口麻豆传煤| 国产秒拍福利视频露脸| 在线看黄网站| 国产精品视频二区三区|