Web數(shù)據(jù)庫(kù)技術(shù)課件_第1頁(yè)
Web數(shù)據(jù)庫(kù)技術(shù)課件_第2頁(yè)
Web數(shù)據(jù)庫(kù)技術(shù)課件_第3頁(yè)
Web數(shù)據(jù)庫(kù)技術(shù)課件_第4頁(yè)
Web數(shù)據(jù)庫(kù)技術(shù)課件_第5頁(yè)
已閱讀5頁(yè),還剩102頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章Web數(shù)據(jù)庫(kù)技術(shù)數(shù)據(jù)庫(kù)原理及應(yīng)用本章引入在Internet的熱潮席卷之下,原本在單機(jī)或局域網(wǎng)中使用的數(shù)據(jù)庫(kù)逐步移植至Internet中,Web技術(shù)與數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)相互融合成為必然趨勢(shì),數(shù)據(jù)庫(kù)廠家和Web公司紛紛推出各自的產(chǎn)品和中間件支持Web技術(shù)和DBMS的融合,將兩者取長(zhǎng)補(bǔ)短,發(fā)揮各自的優(yōu)勢(shì),使用戶可以在Web瀏覽器上方便地檢索數(shù)據(jù)庫(kù)的內(nèi)容。Web數(shù)據(jù)庫(kù)得以迅猛發(fā)展起來(lái)。本章教學(xué)內(nèi)容Web數(shù)據(jù)庫(kù)的產(chǎn)生與發(fā)展1Web數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)2Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)3數(shù)據(jù)庫(kù)訪問(wèn)接口4動(dòng)態(tài)頁(yè)面開(kāi)發(fā)技術(shù)5教學(xué)內(nèi)容萬(wàn)維網(wǎng)WWW1Web數(shù)據(jù)庫(kù)2Web數(shù)據(jù)庫(kù)的發(fā)展階段3一、萬(wàn)維網(wǎng)WWW萬(wàn)維網(wǎng)WideWeb,簡(jiǎn)稱為Web)是歐洲粒子物理實(shí)驗(yàn)室的TimBerners-Lee于1989年3月提出的。1、什么是萬(wàn)維網(wǎng)WWW萬(wàn)維網(wǎng)WWW并非某種特殊的計(jì)算機(jī)網(wǎng)絡(luò),而是一個(gè)大規(guī)模的、聯(lián)機(jī)式的信息儲(chǔ)藏所,是一個(gè)基于超文本方式的信息檢索服務(wù)工具。萬(wàn)維網(wǎng)WWW將全世界Internet上不同地點(diǎn)的許多信息資源有機(jī)地組織在一起,連結(jié)成一個(gè)信息網(wǎng),通過(guò)鏈接的方法(超鏈接)能夠非常方便地從Internet上的一個(gè)站點(diǎn)訪問(wèn)另一個(gè)站點(diǎn),從而主動(dòng)地按需獲取豐富的信息。3、萬(wàn)維網(wǎng)的組成萬(wàn)維網(wǎng)由分布在全球各地的Web節(jié)點(diǎn)組成;Web節(jié)點(diǎn)由Web服務(wù)器維護(hù)和管理的多個(gè)Web頁(yè)面組成;頁(yè)面是可以包含文本、表格、圖像、動(dòng)畫(huà)、聲音、3D世界,以及其它任何信息的超媒體文檔,每個(gè)Web節(jié)點(diǎn)都有進(jìn)入該節(jié)點(diǎn)的起始頁(yè)面,稱為該節(jié)點(diǎn)的“主頁(yè)”;頁(yè)面與頁(yè)面之間通過(guò)超鏈接相連,可以從一個(gè)頁(yè)面通過(guò)超鏈接進(jìn)入同一節(jié)點(diǎn)或其它節(jié)點(diǎn)上的另一頁(yè)面。4、萬(wàn)維網(wǎng)的標(biāo)準(zhǔn)萬(wàn)維網(wǎng)的成功在于其制定了一套簡(jiǎn)單易用的統(tǒng)一標(biāo)準(zhǔn),包括:信息資源的統(tǒng)一資源定位符(UniformResourceLocator,簡(jiǎn)寫(xiě)為URL)超文本標(biāo)記語(yǔ)言(HyperTextMarkupLanguage,簡(jiǎn)寫(xiě)為HTML)超文本傳輸協(xié)議(HyperTextTransferProtocol,簡(jiǎn)寫(xiě)為HTTP)萬(wàn)維網(wǎng)使用統(tǒng)一資源定位符URL來(lái)標(biāo)識(shí)網(wǎng)上的各種資源,并使每一個(gè)資源在整個(gè)Internet的范圍內(nèi)具有唯一的標(biāo)識(shí)符URL。萬(wàn)維網(wǎng)使用超文本標(biāo)記語(yǔ)言HTML作為制作萬(wàn)維網(wǎng)頁(yè)面的標(biāo)準(zhǔn)語(yǔ)言,消除了不同計(jì)算機(jī)之間信息交流的障礙,使任何一臺(tái)計(jì)算機(jī)都能顯示出任何一個(gè)萬(wàn)維網(wǎng)服務(wù)器上的頁(yè)面。萬(wàn)維網(wǎng)以客戶機(jī)/服務(wù)器方式工作??蛻魴C(jī)與服務(wù)器之間通過(guò)超文本傳輸協(xié)議HTTP通信。HTTP協(xié)議定義了瀏覽器怎樣向Web服務(wù)器請(qǐng)求萬(wàn)維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器,它是萬(wàn)維網(wǎng)上能夠可靠地交換文件的重要基礎(chǔ)。二、Web數(shù)據(jù)庫(kù)在傳統(tǒng)的Web服務(wù)中,文本和其他多媒體信息都是以文件的形式來(lái)進(jìn)行存儲(chǔ)和管理的,隨著Web應(yīng)用領(lǐng)域的不斷擴(kuò)展、信息量的不斷增加,靜態(tài)的Web頁(yè)面越來(lái)越不能滿足人們對(duì)Web信息服務(wù)的動(dòng)態(tài)性、實(shí)時(shí)性和交互性的要求。為了進(jìn)行網(wǎng)絡(luò)上數(shù)據(jù)的高效存取,實(shí)現(xiàn)交互式動(dòng)態(tài)Web頁(yè)面,就必須以大量數(shù)據(jù)資源為基礎(chǔ),因此必然要在Web中引入數(shù)據(jù)庫(kù)。1、Web數(shù)據(jù)庫(kù)的概念Web數(shù)據(jù)庫(kù)不僅集合了Web技術(shù)和數(shù)據(jù)庫(kù)技術(shù)的優(yōu)點(diǎn),而且使二者都發(fā)生了質(zhì)的變化:Web網(wǎng)頁(yè)從靜態(tài)網(wǎng)頁(yè)發(fā)展成了由數(shù)據(jù)庫(kù)驅(qū)動(dòng)的動(dòng)態(tài)網(wǎng)頁(yè),而數(shù)據(jù)庫(kù)實(shí)現(xiàn)了開(kāi)發(fā)環(huán)境和應(yīng)用環(huán)境的分離,用戶端可以用統(tǒng)一的瀏覽器實(shí)現(xiàn)跨平臺(tái)和多媒體服務(wù)。2、通過(guò)WWW訪問(wèn)數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)(1)借用現(xiàn)成的瀏覽器軟件,無(wú)需開(kāi)發(fā)數(shù)據(jù)庫(kù)前端。(2)標(biāo)準(zhǔn)統(tǒng)一,開(kāi)發(fā)過(guò)程簡(jiǎn)單。(3)交叉平臺(tái)支持。三、Web數(shù)據(jù)庫(kù)的發(fā)展階段Web數(shù)據(jù)庫(kù)發(fā)展到現(xiàn)在,經(jīng)歷了三個(gè)發(fā)展階段。2、第二階段第二階段:Web數(shù)據(jù)庫(kù)提供靜態(tài)訪問(wèn)和動(dòng)態(tài)內(nèi)容應(yīng)用,實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)文檔的管理和訪問(wèn)。在第二階段的Web數(shù)據(jù)庫(kù)中,使用通用Web網(wǎng)關(guān)接口編程,使數(shù)據(jù)庫(kù)能與Web服務(wù)器直接連接,實(shí)時(shí)動(dòng)態(tài)地將數(shù)據(jù)庫(kù)的信息反映在頁(yè)面上。用戶訪問(wèn)的是靜態(tài)的HTML文檔,但文檔內(nèi)容是隨著數(shù)據(jù)庫(kù)而改變的動(dòng)態(tài)內(nèi)容。缺點(diǎn):不能保持?jǐn)?shù)據(jù)庫(kù)連接狀態(tài),存在性能瓶頸,缺少擴(kuò)展性和保密性3、第三階段第三階段:Web數(shù)據(jù)庫(kù)除了提供第二代Web數(shù)據(jù)庫(kù)的功能外,還能提供基于Web的聯(lián)機(jī)事務(wù)處理能力,在Web的客戶端與服務(wù)器端實(shí)現(xiàn)了動(dòng)態(tài)和個(gè)性化的交流和互動(dòng)。第三階段的Web數(shù)據(jù)庫(kù)使所有對(duì)數(shù)據(jù)庫(kù)的操作(增加、刪除、修改)、信息的查詢和管理都通過(guò)統(tǒng)一標(biāo)準(zhǔn)的Internet瀏覽器界面來(lái)進(jìn)行,更加適應(yīng)Internet技術(shù)的發(fā)展和網(wǎng)絡(luò)互連的需要。8.2Web數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)第8章Web數(shù)據(jù)庫(kù)技術(shù)引入數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)是指在計(jì)算機(jī)系統(tǒng)環(huán)境下數(shù)據(jù)庫(kù)管理系統(tǒng)及其數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的體系結(jié)構(gòu)。數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)與數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用環(huán)境是密切相關(guān)的,隨著計(jì)算機(jī)技術(shù)的發(fā)展以及數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用環(huán)境的演變,數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)也在不斷地演變。隨著計(jì)算模式經(jīng)歷了集中式模式、C/S模式和B/S模式三個(gè)階段的發(fā)展,數(shù)據(jù)庫(kù)系統(tǒng)也隨之出現(xiàn)了相應(yīng)的體系結(jié)構(gòu)。一、數(shù)據(jù)庫(kù)的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)1、客戶機(jī)/服務(wù)器體系結(jié)構(gòu)客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)是以計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境為基礎(chǔ),將計(jì)算任務(wù)有機(jī)地分配給多臺(tái)計(jì)算機(jī)的計(jì)算模式。客戶機(jī)/服務(wù)器結(jié)構(gòu)由三部分組成:客戶機(jī)、服務(wù)器、客戶機(jī)和服務(wù)器之間的連接支持。1、客戶機(jī)/服務(wù)器體系結(jié)構(gòu)1)客戶機(jī)客戶機(jī)一般是一臺(tái)面向最終用戶,運(yùn)行前端應(yīng)用程序且提供外圍開(kāi)發(fā)工具,并通過(guò)網(wǎng)絡(luò)獲得服務(wù)器服務(wù)的微型計(jì)算機(jī)。2)服務(wù)器服務(wù)器一般是具有高檔硬件資源和高性能軟件資源的多用戶計(jì)算機(jī)系統(tǒng)。3)連接支持是一種實(shí)現(xiàn)客戶機(jī)和服務(wù)器之間連接和通信的標(biāo)準(zhǔn)網(wǎng)絡(luò)接口和標(biāo)準(zhǔn)軟件接口。2、客戶機(jī)/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)客戶機(jī)1應(yīng)用程序1客戶機(jī)2應(yīng)用程序2客戶機(jī)n應(yīng)用程序n…網(wǎng)絡(luò)中間軟件DBMSDB網(wǎng)絡(luò)數(shù)據(jù)庫(kù)服務(wù)器在服務(wù)器一端完成DBMS的核心功能,包括接收來(lái)自客戶端的數(shù)據(jù)庫(kù)請(qǐng)求;處理數(shù)據(jù)庫(kù)請(qǐng)求;進(jìn)行安全性確認(rèn)和完整性檢查等。在客戶端放置應(yīng)用開(kāi)發(fā)工具,完成管理用戶界面;接受用戶數(shù)據(jù);處理應(yīng)用任務(wù);生成數(shù)據(jù)庫(kù)請(qǐng)求并向服務(wù)器發(fā)出數(shù)據(jù)庫(kù)請(qǐng)求;從服務(wù)器接受結(jié)果并格式化結(jié)果等。網(wǎng)絡(luò)中間軟件則遵循一定標(biāo)準(zhǔn),負(fù)責(zé)透明地連接客戶機(jī)與服務(wù)器,提供了訪問(wèn)數(shù)據(jù)庫(kù)的統(tǒng)一界面。二、基于瀏覽器/服務(wù)器模式的Web數(shù)據(jù)庫(kù)瀏覽器/服務(wù)器(B/S)計(jì)算模式是隨著Internet技術(shù)的迅猛發(fā)展而發(fā)展起來(lái)的一種新型的網(wǎng)絡(luò)計(jì)算模式。B/S結(jié)構(gòu)是Internet技術(shù)和數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的過(guò)程中形成的數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)。B/S結(jié)構(gòu)代表了當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用軟件技術(shù)發(fā)展的趨勢(shì),是目前人們開(kāi)發(fā)Web數(shù)據(jù)庫(kù)系統(tǒng)普遍采用的數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)。在B/S結(jié)構(gòu)中,可將數(shù)據(jù)庫(kù)服務(wù)器端進(jìn)一步分解成一個(gè)Web服務(wù)器和一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。3、多層B/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)瀏覽器1瀏覽器2瀏覽器n數(shù)據(jù)庫(kù)服務(wù)器DB…網(wǎng)絡(luò)Web服務(wù)器DB應(yīng)用服務(wù)器(Web)應(yīng)用服務(wù)器(Web)…(1)規(guī)范和統(tǒng)一了客戶端程序的標(biāo)準(zhǔn)——瀏覽器模式,減輕了客戶端的壓力,解決了C/S結(jié)構(gòu)中客戶端程序的異構(gòu)性和跨平臺(tái)性。(2)將用戶交互、應(yīng)用業(yè)務(wù)處理和數(shù)據(jù)管理三者相互徹底分離,從而方便進(jìn)行嚴(yán)格的安全管理、提高程序的可維護(hù)性,使其各自完成其擅長(zhǎng)和應(yīng)該完成的任務(wù)。(3)在表示層對(duì)數(shù)據(jù)的輸入進(jìn)行分析檢查,可盡早消除錯(cuò)誤輸入,減少網(wǎng)上傳輸?shù)臄?shù)據(jù)量,加快響應(yīng)速度。4、B/S結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)(4)軟件維護(hù)開(kāi)銷(xiāo)能夠大大降低。(5)充分發(fā)揮了DBMS高效的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理能力,把傳統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)、存取和維護(hù)等技術(shù)應(yīng)用于Internet的Web之上,實(shí)現(xiàn)了更大程度和更大范圍的數(shù)據(jù)庫(kù)資源共享。4、B/S結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)8.3Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)第8章Web數(shù)據(jù)庫(kù)技術(shù)教學(xué)內(nèi)容對(duì)Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的要求1Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的種類(lèi)2Web數(shù)據(jù)庫(kù)設(shè)計(jì)的一般過(guò)程3引入Web數(shù)據(jù)庫(kù)系統(tǒng)的主要目的是要實(shí)現(xiàn)Web與數(shù)據(jù)庫(kù)的連接以產(chǎn)生基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)頁(yè)面,這要通過(guò)Web訪問(wèn)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),相關(guān)的技術(shù)我們稱之為Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)(也稱為動(dòng)態(tài)頁(yè)面技術(shù))。一、對(duì)Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的要求(1)高效性(2)安全性(3)客戶端的簡(jiǎn)潔性(4)開(kāi)放性(異構(gòu)性)(5)可擴(kuò)展性二、Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的種類(lèi)1、基于中間件的Web數(shù)據(jù)庫(kù)系統(tǒng)2、基于客戶端的Web數(shù)據(jù)庫(kù)系統(tǒng)3、上述兩種方法的組合1、基于中間件的Web數(shù)據(jù)庫(kù)系統(tǒng)是在Web服務(wù)器端提供中間件來(lái)連接Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,常用的中間件技術(shù)有通用網(wǎng)關(guān)接口(CGI)、應(yīng)用程序編程接口(WebAPI)、ODBC、JDBC、ADO、ADO.NET等。Web瀏覽器Web服務(wù)器中間件(CGI、API、ODBC、JDBC、ADO、ADO.NET等)數(shù)據(jù)庫(kù)這些技術(shù)的特點(diǎn)是采用Web服務(wù)器作為通信中介,由Web服務(wù)器啟動(dòng)應(yīng)用程序,并由應(yīng)用程序完成數(shù)據(jù)庫(kù)的訪問(wèn),結(jié)果信息再經(jīng)Web服務(wù)器返回客戶端瀏覽器。2、基于客戶端的Web數(shù)據(jù)庫(kù)系統(tǒng)是把應(yīng)用程序下載到客戶端運(yùn)行,在客戶端直接訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,例如:JavaApplet等。Web瀏覽器Web服務(wù)器客戶端應(yīng)用(JavaApplet)數(shù)據(jù)庫(kù)請(qǐng)求下載訪問(wèn)數(shù)據(jù)庫(kù)響應(yīng)3、上述兩種方法的組合第三種方式可看成是上述兩種方法的組合。在服務(wù)器端提供中間件,同時(shí)將應(yīng)用程序的一部分下載到客戶端,并在客戶端通過(guò)WebServer及中間件訪問(wèn)數(shù)據(jù)庫(kù)。這些方案各有其優(yōu)缺點(diǎn),用戶可以根據(jù)具體需要,選擇相應(yīng)的技術(shù)。目前采用最多的解決方案是第一種。三、Web數(shù)據(jù)庫(kù)設(shè)計(jì)的一般過(guò)程1、Web數(shù)據(jù)庫(kù)的環(huán)境Web數(shù)據(jù)庫(kù)的環(huán)境硬件元素軟件元素包括Web服務(wù)器、客戶機(jī)、數(shù)據(jù)庫(kù)服務(wù)器、網(wǎng)絡(luò)①客戶端必須有能夠解釋執(zhí)行HTML代碼的瀏覽器;②Web服務(wù)器中必須具有能執(zhí)行可以自動(dòng)生成HTML代碼的程序的功能,如ASP、CGI等;③后臺(tái)具有能自動(dòng)完成數(shù)據(jù)操作指令的數(shù)據(jù)庫(kù)系統(tǒng),如Access、SQLServer等2、設(shè)計(jì)過(guò)程Web數(shù)據(jù)庫(kù)設(shè)計(jì)的一般過(guò)程:(1)建立網(wǎng)站服務(wù)器;(2)選擇作為Web數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng),設(shè)計(jì)和創(chuàng)建數(shù)據(jù)庫(kù);(3)設(shè)計(jì)數(shù)據(jù)庫(kù)訪問(wèn)接口;(4)設(shè)計(jì)Web數(shù)據(jù)庫(kù)應(yīng)用程序;(5)檢測(cè)、調(diào)試。8.4數(shù)據(jù)庫(kù)訪問(wèn)接口第8章Web數(shù)據(jù)庫(kù)技術(shù)教學(xué)內(nèi)容CGI2

WebAPI3

ODBC4

JDBC5

ADO6

ADO.NET7數(shù)據(jù)庫(kù)訪問(wèn)接口概述1一、數(shù)據(jù)庫(kù)訪問(wèn)接口概述隨著網(wǎng)絡(luò)計(jì)算模式的發(fā)展,中間件日益成為軟件領(lǐng)域中新的熱點(diǎn)。1、中間件(1)定義中間件是一個(gè)用API定義的軟件層,是具有強(qiáng)大通信能力和良好可擴(kuò)展性的分布式軟件管理框架(2)功能是在客戶機(jī)和服務(wù)器或者服務(wù)器和服務(wù)器之間傳送數(shù)據(jù),實(shí)現(xiàn)客戶機(jī)群和服務(wù)器群之間的通信。中間件在整個(gè)分布式系統(tǒng)中起數(shù)據(jù)總線的作用,各種異構(gòu)系統(tǒng)通過(guò)中間件有機(jī)地結(jié)合成一個(gè)整體。1、中間件(3)工作流程在客戶機(jī)里的應(yīng)用程序需要網(wǎng)絡(luò)上某個(gè)服務(wù)器中的數(shù)據(jù)或服務(wù)時(shí),應(yīng)用程序需訪問(wèn)中間件,中間件將查找數(shù)據(jù)源或服務(wù),并在發(fā)送應(yīng)用程序請(qǐng)求后重新打包響應(yīng),將其傳回應(yīng)用程序。2、數(shù)據(jù)庫(kù)訪問(wèn)接口數(shù)據(jù)庫(kù)訪問(wèn)接口,即數(shù)據(jù)庫(kù)中間件,是所有中間件中應(yīng)用最廣、發(fā)展前景最好的一種中間件。作為前端客戶機(jī)和后端數(shù)據(jù)庫(kù)之間的一個(gè)中間層,數(shù)據(jù)庫(kù)訪問(wèn)接口負(fù)責(zé)接收客戶端的數(shù)據(jù)請(qǐng)求,做一些簡(jiǎn)單處理后,把請(qǐng)求再傳遞給相應(yīng)的后端數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行最后的數(shù)據(jù)處理,然后再將結(jié)果由數(shù)據(jù)庫(kù)中間件返回給客戶端。常用數(shù)據(jù)庫(kù)中間件編程技術(shù)有CGI、WebAPI、ODBC、JDBC、ADO、ADO.NET。二、CGI通用網(wǎng)關(guān)接口CGI(CommonGateInterface)是最早普遍使用的Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),幾乎所有的Web服務(wù)器都支持它。1、CGI概述CGI定義了服務(wù)器和外部應(yīng)用程序之間的標(biāo)準(zhǔn)通信接口。它打破了服務(wù)器軟件的局限性,允許用戶根據(jù)需要采用各種語(yǔ)言去實(shí)現(xiàn)無(wú)法用HTTP、HTML實(shí)現(xiàn)的功能,給WWW提供了更為廣闊的應(yīng)用空間。2、CGI工作過(guò)程Web瀏覽器數(shù)據(jù)庫(kù)CGI接口數(shù)據(jù)庫(kù)服務(wù)器(DBMS)Web服務(wù)器CGI程序遵循CGI標(biāo)準(zhǔn)編寫(xiě)的服務(wù)器端的可執(zhí)行程序稱為CGI程序CGI的主要功能就是在Web服務(wù)器程序和CGI程序之間傳遞信息。(1)Web瀏覽器向Web服務(wù)器發(fā)出請(qǐng)求,該請(qǐng)求含請(qǐng)求服務(wù)的類(lèi)型、服務(wù)程序路徑、CGI程序名稱及用戶數(shù)據(jù)等。CGI的工作方式圖(2)Web服務(wù)器通過(guò)CGI定義的通信接口,把用戶發(fā)來(lái)的請(qǐng)求通過(guò)標(biāo)準(zhǔn)輸入,包括環(huán)境變量、命令參數(shù)等,發(fā)送給CGI程序。(3)CGI程序解析和處理用戶請(qǐng)求,打開(kāi)同DBMS的連接,與DBMS交互,按照用戶的需求,對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢或更新。(4)CGI程序可根據(jù)從數(shù)據(jù)庫(kù)中檢索所得到的數(shù)據(jù)生成動(dòng)態(tài)的HTML文檔,通過(guò)標(biāo)準(zhǔn)輸出將其發(fā)送給Web服務(wù)器。(5)Web服務(wù)器將HTML文檔返回給Web瀏覽器,然后關(guān)閉與服務(wù)器的連接。3、利用CGI應(yīng)用程序連接數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)(1)CGI程序可以用任何程序設(shè)計(jì)語(yǔ)言編寫(xiě),如C、C++、Delphi、VisualBasic或Perl等。(2)CGI的跨平臺(tái)性能極佳,CGI的應(yīng)用程序可以移植到絕大部分操作系統(tǒng)上。(3)CGI開(kāi)發(fā)的比較早,相對(duì)比較成熟。因此,目前幾乎所有的Web服務(wù)器均支持CGI。4、CGI方法的缺點(diǎn)(1)最大的缺點(diǎn)是需要消耗大量的系統(tǒng)資源。(2)CGI程序開(kāi)發(fā)復(fù)雜,需要許多底層開(kāi)發(fā)的知識(shí),編寫(xiě)比較困難。(3)數(shù)據(jù)傳輸?shù)姆椒ú环€(wěn)健、效率低下。(4)不具備事務(wù)功能。(5)安全性差,缺少用戶訪問(wèn)控制,對(duì)數(shù)據(jù)庫(kù)難以設(shè)置安全訪問(wèn)權(quán)限。三、WebAPI為了克服CGI的局限性,一種基于共享CGI程序的改進(jìn)方案應(yīng)運(yùn)而生,這就是應(yīng)用程序編程接口WebAPI。1、WebAPI概述WebAPI是某個(gè)Web服務(wù)器開(kāi)發(fā)商為其產(chǎn)品用戶開(kāi)發(fā)類(lèi)似于CGI程序的服務(wù)器端擴(kuò)展程序所提供的專(zhuān)用編程接口。用戶利用WebAPI可以完成CGI程序所能實(shí)現(xiàn)的功能,并且維持服務(wù)器較好的性能。2、WebAPI的優(yōu)缺點(diǎn)用WebAPI開(kāi)發(fā)程序,性能大大優(yōu)于CGI程序。WebAPI的出現(xiàn)解決了CGI的低效問(wèn)題。但WebAPI的缺陷也是很明顯的:(1)開(kāi)發(fā)API程序比開(kāi)發(fā)CGI程序復(fù)雜得多;(2)各種不同的API互不兼容,缺乏一個(gè)統(tǒng)一的業(yè)界標(biāo)準(zhǔn),用某種API編寫(xiě)的程序只能在特定的Web服務(wù)器上運(yùn)行,使用范圍受到極大的限制。四、ODBCODBC是“開(kāi)放數(shù)據(jù)庫(kù)互連”(OpenDatabaseConnectivity)的簡(jiǎn)稱,ODBC是Microsoft公司提出的應(yīng)用程序通用編程接口標(biāo)準(zhǔn),用于對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。ODBC為數(shù)據(jù)庫(kù)用戶和開(kāi)發(fā)人員屏蔽了異構(gòu)環(huán)境的復(fù)雜性,提供了數(shù)據(jù)庫(kù)訪問(wèn)的統(tǒng)一接口,為應(yīng)用程序?qū)崿F(xiàn)與平臺(tái)的無(wú)關(guān)性和可移植性提供了基礎(chǔ),因而ODBC獲得了廣泛的支持和應(yīng)用。1、ODBC概述ODBC定義了一個(gè)基于SQL的、公共的、與數(shù)據(jù)庫(kù)無(wú)關(guān)的API(應(yīng)用程序設(shè)計(jì)接口),使每個(gè)應(yīng)用程序利用相同的源代碼就可訪問(wèn)不同的數(shù)據(jù)庫(kù)系統(tǒng),存取多個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。從而使得應(yīng)用程序與數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)之間在邏輯上可以分離,使應(yīng)用程序具有數(shù)據(jù)庫(kù)無(wú)關(guān)性。也就是說(shuō),用ODBC生成的程序是與數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)引擎無(wú)關(guān)的。2、ODBC的組成與結(jié)構(gòu)ODBC應(yīng)用體系結(jié)構(gòu)主要由客戶端的數(shù)據(jù)庫(kù)應(yīng)用程序、ODBC應(yīng)用程序接口(ODBCAPI)、ODBC驅(qū)動(dòng)程序管理器(ODBCDriverManager)、驅(qū)動(dòng)程序(Driver)、數(shù)據(jù)源(DataSource)、不同RDBMS及其DB構(gòu)成的數(shù)據(jù)庫(kù)平臺(tái)等組成。ODBC應(yīng)用程序接口客戶端數(shù)據(jù)庫(kù)應(yīng)用程序ODBC驅(qū)動(dòng)程序管理器驅(qū)動(dòng)程序1驅(qū)動(dòng)程序2驅(qū)動(dòng)程序n數(shù)據(jù)源1數(shù)據(jù)源2數(shù)據(jù)源nOracleDBMSSybaseDBMSSQLServerDBMSOracleDBMSSybaseDBMSSQLServerDBMS………由應(yīng)用數(shù)據(jù)庫(kù)設(shè)計(jì)人員提供由操作系統(tǒng)提供由各數(shù)據(jù)庫(kù)廠商提供客戶端數(shù)據(jù)庫(kù)應(yīng)用程序提供系統(tǒng)與用戶的界面,是用宿主語(yǔ)言、ODBC函數(shù)和SQL語(yǔ)句編寫(xiě)的訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序。ODBC應(yīng)用程序接口是一種使用ODBC技術(shù)實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)庫(kù)互連的標(biāo)準(zhǔn)接口。ODBC驅(qū)動(dòng)程序管理器用于管理系統(tǒng)中存在的各種驅(qū)動(dòng)程序。驅(qū)動(dòng)程序是一個(gè)用于支持ODBC函數(shù)調(diào)用的模塊,通常是一個(gè)動(dòng)態(tài)鏈接庫(kù)DLL。不同RDBMS的驅(qū)動(dòng)程序是不同的。每種數(shù)據(jù)庫(kù)都要向ODBC驅(qū)動(dòng)程序管理器注冊(cè)它自己的驅(qū)動(dòng)程序。數(shù)據(jù)源是驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)系統(tǒng)連接的橋梁。它不是數(shù)據(jù)庫(kù)系統(tǒng),而是用于表達(dá)ODBC驅(qū)動(dòng)程序與DBMS特殊連接的命名。3、ODBC的接口函數(shù)ODBC實(shí)質(zhì)上可以看成是一個(gè)由數(shù)據(jù)庫(kù)應(yīng)用程序訪問(wèn)的調(diào)用函數(shù)庫(kù),應(yīng)用程序通過(guò)這些函數(shù)可操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)。ODBC為應(yīng)用程序提供的這些調(diào)用函數(shù)可以分成六組①分配和釋放內(nèi)存函數(shù)②連接函數(shù)③執(zhí)行SQL語(yǔ)句函數(shù)④接收結(jié)果函數(shù)⑤事務(wù)控制函數(shù)⑥錯(cuò)誤處理函數(shù)和其他功能函數(shù)4、ODBC的基本工作流程(1)初始化建立ODBC環(huán)境(環(huán)境句柄);建立應(yīng)用程序與數(shù)據(jù)源的連接建立語(yǔ)句句柄,為ODBC調(diào)用執(zhí)行SQL語(yǔ)句作好準(zhǔn)備。(2)SQL處理執(zhí)行SQL語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)進(jìn)行插入、刪除、修改和查詢操作。

(3)終止

通過(guò)釋放語(yǔ)句句柄函數(shù)、釋放連接句柄函數(shù)、釋放環(huán)境句柄函數(shù)的執(zhí)行,釋放各種資源。五、JDBCJDBC是SUN公司針對(duì)Java語(yǔ)言提出的與數(shù)據(jù)庫(kù)連接的API標(biāo)準(zhǔn)。與ODBC類(lèi)似,JDBC是特殊類(lèi)型的API,這些API支持對(duì)數(shù)據(jù)庫(kù)的連接和基本的SQL功能,包括建立數(shù)據(jù)庫(kù)連接、執(zhí)行SQL語(yǔ)句、處理返回結(jié)果等。與ODBC不同的是,JDBC為單一的Java語(yǔ)言的數(shù)據(jù)庫(kù)接口。而ODBC不適合直接在Java中使用,因?yàn)樗褂肅語(yǔ)言接口。1、JDBC概述JDBC由一群類(lèi)和接口組成,通過(guò)調(diào)用這些類(lèi)和接口所提供的方法,Java程序可以連接不同的數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)下達(dá)SQL命令并取得行結(jié)果。JDBC主要有兩種接口:面向程序開(kāi)發(fā)人員的JDBCAPI和面向底層的JDBCDriverAPI。JDBCAPI是面向程序開(kāi)發(fā)人員的、“對(duì)用戶友好的”高級(jí)接口,它定義了Java中的類(lèi),用來(lái)表示數(shù)據(jù)庫(kù)連接、SQL指令、結(jié)果集合、數(shù)據(jù)庫(kù)圖元數(shù)據(jù)等。通過(guò)驅(qū)動(dòng)程序管理器,JDBCAPI可以利用不同的驅(qū)動(dòng)程序連接不同的數(shù)據(jù)庫(kù)系統(tǒng)。JDBCDriverAPI是面向驅(qū)動(dòng)程序開(kāi)發(fā)商的基礎(chǔ)接口,在它之上可以建立高級(jí)接口和工具。2、JDBC的體系結(jié)構(gòu)JDBC的體系結(jié)構(gòu)主要由客戶端的Java/JSP應(yīng)用程序、JDBC應(yīng)用程序接口(JDBCAPI)、JDBC驅(qū)動(dòng)程序管理器、JDBC驅(qū)動(dòng)程序、不同的數(shù)據(jù)庫(kù)平臺(tái)等組成。Java/JSP應(yīng)用程序JDBCAPIJDBC驅(qū)動(dòng)程序管理器本地JavaAPIJDBC-ODBC橋ODBC驅(qū)動(dòng)DB本地協(xié)議純Java驅(qū)動(dòng)程序網(wǎng)絡(luò)協(xié)議純Java驅(qū)動(dòng)程序DBDBDB與ODBC一樣,JDBC的體系結(jié)構(gòu)同樣有一個(gè)JDBC驅(qū)動(dòng)程序管理器作為Java應(yīng)用程序與數(shù)據(jù)庫(kù)的中介,它把對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求轉(zhuǎn)換和傳送給下層的JDBC驅(qū)動(dòng)程序,或者轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)的固有調(diào)用。更多的實(shí)現(xiàn)方式是通過(guò)JDBC-ODBC橋接驅(qū)動(dòng)程序,轉(zhuǎn)化為一個(gè)ODBC調(diào)用,進(jìn)行對(duì)數(shù)據(jù)庫(kù)的操作。這是目前知曉的四種JDBC驅(qū)動(dòng)程序。3、JDBC驅(qū)動(dòng)程序的類(lèi)型JDBC驅(qū)動(dòng)程序可分為以下四個(gè)種類(lèi)。(1)JDBC-ODBC橋加ODBC驅(qū)動(dòng)程序(2)本地API(3)網(wǎng)絡(luò)協(xié)議純Java驅(qū)動(dòng)程序(4)本地協(xié)議純Java驅(qū)動(dòng)程序(1)JDBC-ODBC橋加ODBC驅(qū)動(dòng)程序JavaSoft公司的橋產(chǎn)品利用ODBC驅(qū)動(dòng)程序提供JDBC訪問(wèn)??蛻舳薐DBC-ODBC橋ODBC驅(qū)動(dòng)程序客戶端鏈接庫(kù)服務(wù)器數(shù)據(jù)庫(kù)這類(lèi)驅(qū)動(dòng)程序的特色是必須在使用者端的計(jì)算機(jī)上事先安裝好ODBC驅(qū)動(dòng)程序,然后通過(guò)JDBC-ODBC的調(diào)用方法,把JDBC操作翻譯成對(duì)應(yīng)的ODBC調(diào)用,進(jìn)而通過(guò)ODBC類(lèi)存取數(shù)據(jù)庫(kù)。(2)本地API客戶端本地JavaAPI客戶端鏈接庫(kù)服務(wù)器數(shù)據(jù)庫(kù)這種類(lèi)型的驅(qū)動(dòng)程序也必須先在客戶機(jī)上安裝好特定的驅(qū)動(dòng)程序,然后通過(guò)JDBC本地API橋接器的轉(zhuǎn)換,把JAVAAPI調(diào)用轉(zhuǎn)換成特定驅(qū)動(dòng)程序的調(diào)用方法,利用客戶機(jī)上的本地代碼庫(kù)與數(shù)據(jù)庫(kù)直接進(jìn)行通信。(3)網(wǎng)絡(luò)協(xié)議純Java驅(qū)動(dòng)程序通常,這是最為靈活的JDBC驅(qū)動(dòng)程序,能夠發(fā)布到Internet上,與數(shù)據(jù)庫(kù)產(chǎn)品無(wú)關(guān)。為了支持Internet訪問(wèn),必須處理Web所提出的安全性、通過(guò)防火墻的訪問(wèn)等方面的額外要求??蛻舳司W(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序服務(wù)器數(shù)據(jù)庫(kù)中間層服務(wù)器數(shù)據(jù)鏈接庫(kù)這種驅(qū)動(dòng)程序?qū)DBC轉(zhuǎn)換為與DBMS無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議,之后這種協(xié)議又被某個(gè)服務(wù)器轉(zhuǎn)換為一種DBMS協(xié)議。這種網(wǎng)絡(luò)服務(wù)器中間件能夠?qū)⑺募僇ava客戶機(jī)連接到多種不同的數(shù)據(jù)庫(kù)上,所用的具體協(xié)議取決于提供者。(4)本地協(xié)議純Java驅(qū)動(dòng)程序客戶端數(shù)據(jù)庫(kù)網(wǎng)絡(luò)驅(qū)動(dòng)程序服務(wù)器數(shù)據(jù)庫(kù)這種類(lèi)型的驅(qū)動(dòng)程序?qū)DBC調(diào)用直接轉(zhuǎn)換為DBMS所使用的網(wǎng)絡(luò)協(xié)議。它允許從客戶機(jī)機(jī)器上直接調(diào)用DBMS服務(wù)器。4、JDBC的工作流程使用JDBC連接數(shù)據(jù)庫(kù)的基本步驟是:①注冊(cè)和加載驅(qū)動(dòng)器;②建立連接;③創(chuàng)建語(yǔ)句對(duì)象;④執(zhí)行查詢語(yǔ)句;⑤查詢結(jié)果處理及關(guān)閉結(jié)果集對(duì)象;⑥關(guān)閉語(yǔ)句對(duì)象;⑦關(guān)閉連接。六、ADOActiveX數(shù)據(jù)對(duì)象(ActiveXDataObject,簡(jiǎn)寫(xiě)為ADO)是允許用戶與數(shù)據(jù)存儲(chǔ)進(jìn)行交互的組件,是ASP的內(nèi)置組件之一,通常也稱ADO組件。1、ADO概述ADO是Windows的開(kāi)放服務(wù)體系的標(biāo)準(zhǔn)組成部分,是人們廣泛接受的用于數(shù)據(jù)庫(kù)訪問(wèn)的應(yīng)用程序接口,是一項(xiàng)容易使用并且可擴(kuò)展的將數(shù)據(jù)庫(kù)訪問(wèn)添加到Web頁(yè)的技術(shù)。ADO并不是一種新技術(shù),而是采用現(xiàn)有的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),并把這些不同的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)融合在一起,形成一種適應(yīng)需要的方法,它提供了一個(gè)簡(jiǎn)單的程序化模型和完善的數(shù)據(jù)處理功能。2、ADO對(duì)象模型ADO是采用層次框架實(shí)現(xiàn)的,其層次結(jié)構(gòu)如圖所示。Connection對(duì)象Error對(duì)象Errors集合Command對(duì)象Parameter對(duì)象Parameters集合Property對(duì)象Properties集合Recordset對(duì)象Field對(duì)象Fields集合Property對(duì)象Properties集合Property對(duì)象Properties集合Property對(duì)象Properties集合

ADO定義了7種獨(dú)立的對(duì)象:Connection對(duì)象、Command對(duì)象、Recordset對(duì)象、Field對(duì)象、Parameter對(duì)象、Property對(duì)象和Error對(duì)象。Connection對(duì)象是其他對(duì)象與集合的基礎(chǔ),Connection對(duì)象包含了一個(gè)Errors集合和一個(gè)Error對(duì)象,用來(lái)記錄連接過(guò)程中所發(fā)生的錯(cuò)誤信息。Command對(duì)象包含了一個(gè)特有的Parameters集合和一個(gè)Parameter對(duì)象,用來(lái)傳遞Command對(duì)象所需的命令參數(shù)。Recordset對(duì)象包含了一個(gè)Fields集合和一個(gè)Field對(duì)象,用來(lái)記錄Recordset對(duì)象中各個(gè)字段的相關(guān)屬性。在ADO的7個(gè)對(duì)象中,Connection對(duì)象、Command對(duì)象和Recordset對(duì)象是使用最多的三個(gè)主要對(duì)象。

通過(guò)這些對(duì)象與集合,用戶可以很方便地建立數(shù)據(jù)庫(kù)連接,執(zhí)行SQL查詢以及存取查詢結(jié)果等。2、ADO對(duì)象模型

ADO各個(gè)對(duì)象之間的相互關(guān)系圖ConnectionErrorCommandParameterRecordsetFieldExecute方法ActiveConnection屬性ActiveConnection屬性Execute方法Source屬性Parameters屬性Fields集合Errors集合兩個(gè)重要關(guān)系:①Connection對(duì)象和Command對(duì)象使用Execute方法可以產(chǎn)生一個(gè)Recordset對(duì)象;兩個(gè)重要關(guān)系:②Recordset對(duì)象和Command對(duì)象使用ActiveConnection屬性可以產(chǎn)生一個(gè)Connection對(duì)象。3、ADO對(duì)象功能(1)Connection對(duì)象:連接對(duì)象

用于建立Web服務(wù)器到數(shù)據(jù)源的連接。其它兩個(gè)內(nèi)部對(duì)象:Command對(duì)象和Recordset對(duì)象對(duì)數(shù)據(jù)庫(kù)的任何操作都要通過(guò)Connection對(duì)象才能夠完成。(2)Recordset對(duì)象:記錄集對(duì)象是對(duì)從基本表或命令執(zhí)行的結(jié)果所得到的整個(gè)記錄集合的封裝,其數(shù)據(jù)結(jié)構(gòu)可認(rèn)為與表相同,利用Recordset對(duì)象可以非常方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種操作和控制。3、ADO對(duì)象功能(3)Command對(duì)象:命令對(duì)象主要功能是讓服務(wù)器執(zhí)行SQL命令或服務(wù)器端的存儲(chǔ)過(guò)程。(4)Field對(duì)象:域?qū)ο驲ecordset對(duì)象有一個(gè)十分有用的對(duì)象集合Fields,F(xiàn)ields由多個(gè)Field對(duì)象組成,F(xiàn)ield對(duì)象代表一列普通數(shù)據(jù)類(lèi)型數(shù)據(jù),每個(gè)Field對(duì)象對(duì)應(yīng)于Recordset對(duì)象中的一列。(5)Parameter對(duì)象:參數(shù)對(duì)象代表SQL存儲(chǔ)過(guò)程或有參數(shù)查詢中的一個(gè)參數(shù)。3、ADO對(duì)象功能(6)Property對(duì)象:屬性對(duì)象代表數(shù)據(jù)提供者的具體屬性。ADO對(duì)象有兩種類(lèi)型的屬性:內(nèi)置屬性和動(dòng)態(tài)屬性。內(nèi)置屬性是指那些已在ADO中實(shí)現(xiàn)并且任何新對(duì)象可以立即使用的屬性。Property對(duì)象是基本提供者所定義的動(dòng)態(tài)屬性的容器。(7)Error對(duì)象:錯(cuò)誤對(duì)象代表ADO錯(cuò)誤,用來(lái)表示方法調(diào)用失敗所產(chǎn)生的某個(gè)錯(cuò)誤。4、ADO和數(shù)據(jù)庫(kù)的連接應(yīng)用程序ADOOLEDBProviderforODBCOLEDBProviderfor數(shù)據(jù)庫(kù)ODBCdriverfor數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)通過(guò)ADO訪問(wèn)數(shù)據(jù)庫(kù)有兩種途徑,一種是通過(guò)ODBC驅(qū)動(dòng)程序,另一種是通過(guò)數(shù)據(jù)庫(kù)專(zhuān)用的OLEDBProvider。后者有更高的訪問(wèn)效率。七、ADO.NETADO.NET是微軟的新一代數(shù)據(jù)訪問(wèn)標(biāo)準(zhǔn),它是為了廣泛的數(shù)據(jù)控制而設(shè)計(jì)的,而不僅僅為數(shù)據(jù)庫(kù)應(yīng)用,所以使用起來(lái)比以前的ADO更靈活、更有彈性,也提供了更多的功能,提供了更有效的數(shù)據(jù)存取。它采用面向?qū)ο蠼Y(jié)構(gòu),采用業(yè)界標(biāo)準(zhǔn)的XML作為數(shù)據(jù)交換格式,能夠應(yīng)用于多種操作系統(tǒng)環(huán)境。1、ADO.NET發(fā)展隨著公共語(yǔ)言運(yùn)行庫(kù)和.NET框架的出現(xiàn),微軟為.NET框架設(shè)計(jì)了一個(gè)新的數(shù)據(jù)訪問(wèn)對(duì)象模型ADO.NET。ADO.NET用微軟.NET框架的托管代碼創(chuàng)建,這意味著它可以享受到類(lèi)型安全和內(nèi)存管理環(huán)境的種種好處,使之成為優(yōu)于ADO的一個(gè)更為穩(wěn)健的數(shù)據(jù)庫(kù)訪問(wèn)平臺(tái)。作為一種數(shù)據(jù)庫(kù)訪問(wèn)框架,ADO.NET在ADO的基礎(chǔ)上進(jìn)行了重新設(shè)計(jì),使它能處理當(dāng)今n層的Web應(yīng)用程序所要求的非連接數(shù)據(jù)體系結(jié)構(gòu)??傊瓵DO.NET是在ADO的基礎(chǔ)上發(fā)展起來(lái)的,但又不是簡(jiǎn)單的升級(jí),它在簡(jiǎn)化編程、維護(hù)和效能方面都做了相當(dāng)大的改進(jìn)。ADO.NET是一項(xiàng)全新的技術(shù),需要采用一種新的思維模式來(lái)對(duì)待。2、ADO.NET模型連接的對(duì)象斷開(kāi)連接的對(duì)象ConnectionTransactionDataAdapterCommandParameterDataReaderDataSetDataTableDataRowDataColumnConstraintDataRelationDataViewADO.NET提供了功能強(qiáng)大的數(shù)據(jù)訪問(wèn)接口,其數(shù)據(jù)的連接有兩種方式:斷開(kāi)連接與直接連接。因此ADO.NET對(duì)象模型分為“連接的對(duì)象”和“斷開(kāi)連接的對(duì)象”兩部分?!斑B接的對(duì)象”主要有Connection對(duì)象、Command對(duì)象、DataReader對(duì)象等,這些對(duì)象直接與數(shù)據(jù)庫(kù)通信,以管理連接和事務(wù),以及從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)和向數(shù)據(jù)庫(kù)提交所做的更改。

“斷開(kāi)連接的對(duì)象”主要有數(shù)據(jù)集DataSet對(duì)象以及它所包括的DataTable和DataRelation對(duì)象等,它們?cè)试S用戶脫機(jī)處理數(shù)據(jù),以便更好地提高系統(tǒng)效率。2、ADO.NET模型ADO.NET對(duì)象模型的兩個(gè)核心成員是.NET數(shù)據(jù)提供程序和DataSet對(duì)象。.NET數(shù)據(jù)提供程序與DataSet之間的關(guān)系DataSetDataTableCollectionXML數(shù)據(jù)存儲(chǔ)或文件.NET數(shù)據(jù)提供程序ConnectionCommandDataReaderDataAdapterInsertCommandUpdateCommandDeleteCommandSelectCommandDataTableDataRelationCollection數(shù)據(jù)庫(kù).NET數(shù)據(jù)提供程序是數(shù)據(jù)庫(kù)的訪問(wèn)接口,負(fù)責(zé)建立連接和數(shù)據(jù)操作。它作為DataSet對(duì)象與數(shù)據(jù)源之間的橋梁,負(fù)責(zé)將數(shù)據(jù)源中的數(shù)據(jù)取出后置入DataSet對(duì)象中,或?qū)?shù)據(jù)存回?cái)?shù)據(jù)源。

DataSet是非連接的、位于內(nèi)存中的數(shù)據(jù)存儲(chǔ),主要負(fù)責(zé)對(duì)數(shù)據(jù)的操作。DataSet是專(zhuān)門(mén)為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)而設(shè)計(jì)的。因此,它可以用于多種不同的數(shù)據(jù)源,可以使用XML數(shù)據(jù)。

3、.NET的數(shù)據(jù)提供程序.NETFramework數(shù)據(jù)提供程序在數(shù)據(jù)源和代碼之間創(chuàng)建了一個(gè)最小層,以便在不以功能為代價(jià)的前提下提高性能。到目前為止,可用的.NET主要數(shù)據(jù)提供程序(提供者)有4個(gè)。這4個(gè)數(shù)據(jù)提供程序中的每一個(gè)都有一個(gè)特定的目的,并且都提供對(duì)特定類(lèi)型數(shù)據(jù)源的托管訪問(wèn)。(1)SQLServer.NETFramework這個(gè)數(shù)據(jù)提供者專(zhuān)用于SQLServer數(shù)據(jù)庫(kù)。它使用SQL快速的、本地的TCP/IP接口,提供快速、健壯和可靠的訪問(wèn)SQLServer的方法??梢灾苯釉L問(wèn)SQLServer而不用添加OLEDB或ODBC層,因此它是輕量的,并具有良好的性能。(2)OLEDB.NETFrameworkOLEDB數(shù)據(jù)提供程序可使用任何OLEDB數(shù)據(jù)提供程序來(lái)處理數(shù)據(jù),但是這個(gè)提供者必須使用COMInterop層。因此,在.NETFramework中使用OLEDB時(shí),將會(huì)增加系統(tǒng)的額外開(kāi)銷(xiāo)。通常,人們使用OLEDB.NET數(shù)據(jù)提供者與Access數(shù)據(jù)庫(kù)、MicrosoftExchange進(jìn)行通信。(3)Oracle.NETFramework該數(shù)據(jù)提供程序支持使用Oracle客戶端軟件提供的Oracle調(diào)用接口(OC)訪問(wèn)Oracle數(shù)據(jù)庫(kù)。如果使用的是Oracle數(shù)據(jù)源,則使用這個(gè)數(shù)據(jù)提供者將能得到更快的速度和更可靠的性能。Oracle.NETFramework數(shù)據(jù)提供程序要求必須先在系統(tǒng)上安裝Oracle客戶端軟件(8.1.7版或更高版本),才能連接到Oracle數(shù)據(jù)源。(4)ODBC.NETFramework如果數(shù)據(jù)源不是SQLServer、Oracle或Access,也不是通過(guò)OLEDB驅(qū)動(dòng)程序能夠訪問(wèn)的其他數(shù)據(jù)源,則惟一的選擇就是使用ODBCProviderfor.NET。ODBC.NETFramework數(shù)據(jù)提供程序使用本機(jī)ODBC驅(qū)動(dòng)程序管理器(DM)啟用數(shù)據(jù)訪問(wèn)。微軟的.NETODBCProvider是為了向后兼容而采取的措施,它不是一個(gè)高性能的數(shù)據(jù)提供者。4、ADO.NET和ADO的比較因?yàn)锳DO.NET是從ADO發(fā)展而來(lái)的,它與ADO有許多相似性。然而,ADO.NET在ADO的基礎(chǔ)上做了很大的改進(jìn)。(1)數(shù)據(jù)表現(xiàn)形式在ADO中,數(shù)據(jù)在內(nèi)存中表示的形式為記錄集(RecordSet)。而在ADO.NET中,它以數(shù)據(jù)集(DataSet)為主要表現(xiàn)形式。記錄集好比一個(gè)單獨(dú)的表。數(shù)據(jù)集可以包含多個(gè)截然不同的表,還能夠維護(hù)表之間的關(guān)系。當(dāng)要訪問(wèn)的數(shù)據(jù)來(lái)自多個(gè)關(guān)聯(lián)的表時(shí),ADO.NET比ADO對(duì)數(shù)據(jù)的訪問(wèn)更優(yōu)越,因?yàn)閿?shù)據(jù)集可以包含這樣的數(shù)據(jù),而記錄集則不能。(2)數(shù)據(jù)訪問(wèn)ADO和ADO.NET之間的另一個(gè)重要差別在于它們數(shù)據(jù)訪問(wèn)方式不同。ADO通過(guò)MoveNext方法順序掃描記錄集的行。而在ADO.NET中,數(shù)據(jù)集(DataSet)除了支持順序訪問(wèn)之外,還允許對(duì)數(shù)據(jù)表中的行號(hào)進(jìn)行隨機(jī)訪問(wèn)。相比之下,在ADO.NET中數(shù)據(jù)訪問(wèn)變得更加容易、更加快速。(3)斷開(kāi)連接方式的數(shù)據(jù)訪問(wèn)在ADO中,記錄集也可以實(shí)現(xiàn)斷開(kāi)連接方式的數(shù)據(jù)訪問(wèn)。但是這種連接方式效率不高,而且不是徹底的斷開(kāi)連接方式。而ADO.NET則使用數(shù)據(jù)集完全實(shí)現(xiàn)了與數(shù)據(jù)源的斷開(kāi)連接方式。ADO通過(guò)調(diào)用OLEDB提供者與數(shù)據(jù)庫(kù)通信,而ADO.NET則使用數(shù)據(jù)適配器與數(shù)據(jù)庫(kù)進(jìn)行通信,這個(gè)適配器可以采用不同的方式與不同類(lèi)型的數(shù)據(jù)源進(jìn)行通信。(4)在應(yīng)用程序之間共享數(shù)據(jù)ADO通過(guò)COM調(diào)度機(jī)制傳輸記錄集,而ADO.NET則使用XML以數(shù)據(jù)集的形式傳輸數(shù)據(jù)。同COM調(diào)度相比,使用XML傳輸數(shù)據(jù)具有許多優(yōu)點(diǎn):更豐富的數(shù)據(jù)類(lèi)型、更高的性能、能夠穿透防火墻等。8.5動(dòng)態(tài)頁(yè)面開(kāi)發(fā)技術(shù)第8章Web數(shù)據(jù)庫(kù)技術(shù)教學(xué)內(nèi)容

ASP技術(shù)1

PHP技術(shù)2

Servlet技術(shù)3

JSP技術(shù)4一、ASP技術(shù)ASP(ActiveServerPages,動(dòng)態(tài)服務(wù)器主頁(yè))是目前非常流行的開(kāi)放式Web服務(wù)器應(yīng)用程序開(kāi)發(fā)技術(shù)。ASP屬于ActiveX技術(shù)中的服務(wù)器端技術(shù)。ASP中的命令和Script語(yǔ)句都是由服務(wù)器來(lái)解釋執(zhí)行的,執(zhí)行結(jié)果產(chǎn)生動(dòng)態(tài)生成的Web頁(yè)面并送到瀏覽器。1、ASP文件ASP通過(guò)擴(kuò)展名為.asp的ASP文件來(lái)實(shí)現(xiàn),一個(gè)ASP文件相當(dāng)于一個(gè)可執(zhí)行文件,因此必須放在Web服務(wù)器上有可執(zhí)行權(quán)限的目錄下。ASP文件是一個(gè)文本文件,它可以包括下列元素的任意組合:①文本(text);②HTML標(biāo)記(tags);③Script命令。2、ASP的工作流程Web瀏覽器數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)服務(wù)器(DBMS)ADO/ODBCASP程序(*.asp)Web服務(wù)器當(dāng)用戶通過(guò)瀏覽器向Web服務(wù)器申請(qǐng)一個(gè)*.asp主頁(yè)時(shí),Web服務(wù)器響應(yīng)該請(qǐng)求,調(diào)用ASP引擎,解釋執(zhí)行將被請(qǐng)求的*.asp文件中的每一個(gè)命令,動(dòng)態(tài)生成一個(gè)HTML頁(yè)面,并送到瀏覽器。

當(dāng)遇到任何與ActiveXScriptng兼容的腳本(如VBScript,JavaScript)時(shí),ASP引擎會(huì)調(diào)用相應(yīng)的腳本引擎進(jìn)行處理若腳本中含有訪問(wèn)數(shù)據(jù)庫(kù)的請(qǐng)求,就通過(guò)ODBC或OLEDB與后臺(tái)數(shù)據(jù)庫(kù)連接,由數(shù)據(jù)庫(kù)訪問(wèn)組件執(zhí)行訪庫(kù)操作,它依據(jù)訪問(wèn)數(shù)據(jù)庫(kù)的結(jié)果集自動(dòng)生成符合HTML的主頁(yè),以響應(yīng)用戶的請(qǐng)求。二、PHP技術(shù)PHP是一種用于創(chuàng)建動(dòng)態(tài)Web頁(yè)面的服務(wù)器端HTML嵌入式腳本語(yǔ)言,它與ASP相似。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論