《Web數(shù)據(jù)庫(kù)技術(shù)》PPT課件.ppt
《《Web數(shù)據(jù)庫(kù)技術(shù)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《Web數(shù)據(jù)庫(kù)技術(shù)》PPT課件.ppt(107頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第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ā)展起來 本章教學(xué)內(nèi)容 8 1Web數(shù)據(jù)庫(kù)的產(chǎn)生與發(fā)展 第8章Web數(shù)據(jù)庫(kù)技術(shù) 教學(xué)內(nèi)容 一 萬(wàn)維網(wǎng)WWW 萬(wàn)維網(wǎng)WWW WorldWideWeb 簡(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) 通過鏈接的方法 超鏈接 能夠非常方便地從Internet上的一個(gè)站點(diǎn)訪問另一個(gè)站點(diǎn) 從而主動(dòng)地按需獲取豐富的信息 2 萬(wàn)維網(wǎng)最大的特點(diǎn) 萬(wàn)維網(wǎng)最大的特點(diǎn)是擁有非常友善的圖形界面 非常簡(jiǎn)單的操作方法 以及圖 文 聲 像并茂的顯示方式 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)畫 聲音 3D世界 以及其它任何信息的超媒體文檔 每個(gè)Web節(jié)點(diǎn)都有進(jìn)入該節(jié)點(diǎn)的起始頁(yè)面 稱為該節(jié)點(diǎn)的 主頁(yè) 頁(yè)面與頁(yè)面之間通過超鏈接相連 可以從一個(gè)頁(yè)面通過超鏈接進(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)寫為URL 超文本標(biāo)記語(yǔ)言 HyperTextMarkupLanguage 簡(jiǎn)寫為HTML 超文本傳輸協(xié)議 HyperTextTransferProtocol 簡(jiǎn)寫為HTTP 萬(wàn)維網(wǎng)使用統(tǒng)一資源定位符URL來標(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ù)器方式工作 客戶機(jī)與服務(wù)器之間通過超文本傳輸協(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ù)中 文本和其他多媒體信息都是以文件的形式來進(jìn)行存儲(chǔ)和管理的 隨著Web應(yīng)用領(lǐng)域的不斷擴(kuò)展 信息量的不斷增加 靜態(tài)的Web頁(yè)面越來越不能滿足人們對(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ù)據(jù)庫(kù)是指將數(shù)據(jù)庫(kù)技術(shù)與Web技術(shù)融合 使數(shù)據(jù)庫(kù)成為Web的重要組成部分的數(shù)據(jù)庫(kù) 就是用戶利用瀏覽器作為輸入界面 輸入必要的數(shù)據(jù) 瀏覽器將這些數(shù)據(jù)傳送至網(wǎng)站 網(wǎng)站再對(duì)輸入數(shù)據(jù)實(shí)施處理 并將其執(zhí)行的結(jié)果返回給瀏覽器 通過瀏覽器將最終執(zhí)行結(jié)果提交給用戶 可以簡(jiǎn)單地認(rèn)為 Web數(shù)據(jù)庫(kù)就是Internet 數(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)了開發(fā)環(huán)境和應(yīng)用環(huán)境的分離 用戶端可以用統(tǒng)一的瀏覽器實(shí)現(xiàn)跨平臺(tái)和多媒體服務(wù) 2 通過WWW訪問數(shù)據(jù)庫(kù)的優(yōu)點(diǎn) 1 借用現(xiàn)成的瀏覽器軟件 無(wú)需開發(fā)數(shù)據(jù)庫(kù)前端 2 標(biāo)準(zhǔn)統(tǒng)一 開發(fā)過程簡(jiǎn)單 3 交叉平臺(tái)支持 三 Web數(shù)據(jù)庫(kù)的發(fā)展階段 Web數(shù)據(jù)庫(kù)發(fā)展到現(xiàn)在 經(jīng)歷了三個(gè)發(fā)展階段 1 第一階段 第一階段 Web數(shù)據(jù)庫(kù)提供靜態(tài)訪問和靜態(tài)內(nèi)容應(yīng)用 早期的Web數(shù)據(jù)庫(kù)提供靜態(tài)文檔的管理和訪問 程序員根據(jù)數(shù)據(jù)庫(kù)內(nèi)容用HTML編寫Web頁(yè)面 用戶對(duì)數(shù)據(jù)庫(kù)的訪問實(shí)際是對(duì)該靜態(tài)HTML文檔的訪問 第一階段Web數(shù)據(jù)庫(kù)是在還沒有出現(xiàn)Web數(shù)據(jù)庫(kù)訪問技術(shù)的時(shí)候產(chǎn)生的 基本只是Web技術(shù) 缺點(diǎn) 不能實(shí)時(shí)訪問 數(shù)據(jù)庫(kù)維護(hù)工作量很大 2 第二階段 第二階段 Web數(shù)據(jù)庫(kù)提供靜態(tài)訪問和動(dòng)態(tài)內(nèi)容應(yīng)用 實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)文檔的管理和訪問 在第二階段的Web數(shù)據(jù)庫(kù)中 使用通用Web網(wǎng)關(guān)接口編程 使數(shù)據(jù)庫(kù)能與Web服務(wù)器直接連接 實(shí)時(shí)動(dòng)態(tài)地將數(shù)據(jù)庫(kù)的信息反映在頁(yè)面上 用戶訪問的是靜態(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ù)的操作 增加 刪除 修改 信息的查詢和管理都通過統(tǒng)一標(biāo)準(zhǔn)的Internet瀏覽器界面來進(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ù) 教學(xué)內(nèi)容 引入 數(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)用程序且提供外圍開發(fā)工具 并通過網(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ī) 服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)是把DBMS功能和應(yīng)用分開 使網(wǎng)絡(luò)中某個(gè) 些 結(jié)點(diǎn)上的計(jì)算機(jī)專門用于執(zhí)行DBMS的功能 稱為數(shù)據(jù)庫(kù)服務(wù)器 其它結(jié)點(diǎn)上的計(jì)算機(jī)安裝DBMS的外圍開發(fā)工具 支持用戶的應(yīng)用 稱為客戶機(jī) 或應(yīng)用服務(wù)器 二者相結(jié)合 協(xié)同工作 其基本思想是服務(wù)器資源共享 但功能是分布的 它把單機(jī)環(huán)境下的DBMS功能在網(wǎng)絡(luò) 包括多臺(tái)計(jì)算機(jī) 環(huán)境下進(jìn)行合理的分布 在客戶機(jī)和服務(wù)器之間作適當(dāng)?shù)呐渲?2 客戶機(jī) 服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng) 在服務(wù)器一端完成DBMS的核心功能 包括接收來自客戶端的數(shù)據(jù)庫(kù)請(qǐng)求 處理數(shù)據(jù)庫(kù)請(qǐng)求 進(jìn)行安全性確認(rèn)和完整性檢查等 在客戶端放置應(yīng)用開發(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ù)器 提供了訪問數(shù)據(jù)庫(kù)的統(tǒng)一界面 二 基于瀏覽器 服務(wù)器模式的Web數(shù)據(jù)庫(kù) 瀏覽器 服務(wù)器 B S 計(jì)算模式是隨著Internet技術(shù)的迅猛發(fā)展而發(fā)展起來的一種新型的網(wǎng)絡(luò)計(jì)算模式 B S結(jié)構(gòu)是Internet技術(shù)和數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的過程中形成的數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu) B S結(jié)構(gòu)代表了當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用軟件技術(shù)發(fā)展的趨勢(shì) 是目前人們開發(fā)Web數(shù)據(jù)庫(kù)系統(tǒng)普遍采用的數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu) B S結(jié)構(gòu)是C S結(jié)構(gòu)的繼承和發(fā)展 從本質(zhì)上講 B S計(jì)算模式和C S計(jì)算模式都是一種請(qǐng)求 應(yīng)答方式 但C S計(jì)算模式需要在客戶機(jī)上裝載大量的應(yīng)用軟件 負(fù)擔(dān)較重 而B S計(jì)算模式是一種基于Hyperlink 超鏈接 HTML 超文本標(biāo)記語(yǔ)言 Java的三層C S結(jié)構(gòu) 客戶機(jī)上只需安裝單一的瀏覽器軟件 負(fù)擔(dān)很輕 因此是一種全新的體系結(jié)構(gòu) 1 B S結(jié)構(gòu)概述 B S結(jié)構(gòu)將數(shù)據(jù)處理過程分為表示層 功能層和數(shù)據(jù)層三部分 分別由Web瀏覽器 具有應(yīng)用程序擴(kuò)展功能的Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器實(shí)現(xiàn) 2 三層B S結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng) 表示層位于客戶端 表示層的任務(wù)是由Web瀏覽器向網(wǎng)絡(luò)上的某一Web服務(wù)器提出服務(wù)請(qǐng)求 Web服務(wù)器用超文本傳輸協(xié)議和超文本標(biāo)記語(yǔ)言來描述和組織信息 把所需的主頁(yè)傳送給客戶端 客戶機(jī)接受傳來的主頁(yè)文件 并把它顯示在Web瀏覽器上 功能層位于第二層 功能層的任務(wù)是接受用戶的請(qǐng)求 與數(shù)據(jù)庫(kù)進(jìn)行連接 通過SQL等方式向數(shù)據(jù)庫(kù)服務(wù)器提出數(shù)據(jù)處理申請(qǐng) 并將數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)處理結(jié)果傳送回客戶端 數(shù)據(jù)層位于第三層 數(shù)據(jù)層的任務(wù)是接受Web服務(wù)器對(duì)數(shù)據(jù)庫(kù)操縱的請(qǐng)求 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)查詢 修改 更新等功能 把運(yùn)行結(jié)果提交給Web服務(wù)器 在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 規(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ù)開銷能夠大大降低 5 充分發(fā)揮了DBMS高效的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理能力 把傳統(tǒng)的數(shù)據(jù)庫(kù)訪問 存取和維護(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ù)訪問技術(shù) 第8章Web數(shù)據(jù)庫(kù)技術(shù) 教學(xué)內(nèi)容 引入 Web數(shù)據(jù)庫(kù)系統(tǒng)的主要目的是要實(shí)現(xiàn)Web與數(shù)據(jù)庫(kù)的連接以產(chǎn)生基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)頁(yè)面 這要通過Web訪問數(shù)據(jù)庫(kù)來實(shí)現(xiàn) 相關(guān)的技術(shù)我們稱之為Web數(shù)據(jù)庫(kù)訪問技術(shù) 也稱為動(dòng)態(tài)頁(yè)面技術(shù) 一 對(duì)Web數(shù)據(jù)庫(kù)訪問技術(shù)的要求 1 高效性 2 安全性 3 客戶端的簡(jiǎn)潔性 4 開放性 異構(gòu)性 5 可擴(kuò)展性 二 Web數(shù)據(jù)庫(kù)訪問技術(shù)的種類 1 基于中間件的Web數(shù)據(jù)庫(kù)系統(tǒng)2 基于客戶端的Web數(shù)據(jù)庫(kù)系統(tǒng)3 上述兩種方法的組合 1 基于中間件的Web數(shù)據(jù)庫(kù)系統(tǒng) 是在Web服務(wù)器端提供中間件來連接Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器 常用的中間件技術(shù)有通用網(wǎng)關(guān)接口 CGI 應(yīng)用程序編程接口 WebAPI ODBC JDBC ADO ADO NET等 這些技術(shù)的特點(diǎn)是采用Web服務(wù)器作為通信中介 由Web服務(wù)器啟動(dòng)應(yīng)用程序 并由應(yīng)用程序完成數(shù)據(jù)庫(kù)的訪問 結(jié)果信息再經(jīng)Web服務(wù)器返回客戶端瀏覽器 2 基于客戶端的Web數(shù)據(jù)庫(kù)系統(tǒng) 是把應(yīng)用程序下載到客戶端運(yùn)行 在客戶端直接訪問數(shù)據(jù)庫(kù)服務(wù)器 例如 JavaApplet等 3 上述兩種方法的組合 第三種方式可看成是上述兩種方法的組合 在服務(wù)器端提供中間件 同時(shí)將應(yīng)用程序的一部分下載到客戶端 并在客戶端通過WebServer及中間件訪問數(shù)據(jù)庫(kù) 這些方案各有其優(yōu)缺點(diǎn) 用戶可以根據(jù)具體需要 選擇相應(yīng)的技術(shù) 目前采用最多的解決方案是第一種 三 Web數(shù)據(jù)庫(kù)設(shè)計(jì)的一般過程 1 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ì)過程 Web數(shù)據(jù)庫(kù)設(shè)計(jì)的一般過程 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ù)訪問接口 4 設(shè)計(jì)Web數(shù)據(jù)庫(kù)應(yīng)用程序 5 檢測(cè) 調(diào)試 8 4數(shù)據(jù)庫(kù)訪問接口 第8章Web數(shù)據(jù)庫(kù)技術(shù) 教學(xué)內(nèi)容 一 數(shù)據(jù)庫(kù)訪問接口概述 隨著網(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)通過中間件有機(jī)地結(jié)合成一個(gè)整體 1 中間件 3 工作流程在客戶機(jī)里的應(yīng)用程序需要網(wǎng)絡(luò)上某個(gè)服務(wù)器中的數(shù)據(jù)或服務(wù)時(shí) 應(yīng)用程序需訪問中間件 中間件將查找數(shù)據(jù)源或服務(wù) 并在發(fā)送應(yīng)用程序請(qǐng)求后重新打包響應(yīng) 將其傳回應(yīng)用程序 2 數(shù)據(jù)庫(kù)訪問接口 數(shù)據(jù)庫(kù)訪問接口 即數(shù)據(jù)庫(kù)中間件 是所有中間件中應(yīng)用最廣 發(fā)展前景最好的一種中間件 作為前端客戶機(jī)和后端數(shù)據(jù)庫(kù)之間的一個(gè)中間層 數(shù)據(jù)庫(kù)訪問接口負(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ù)訪問技術(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工作過程 遵循CGI標(biāo)準(zhǔn)編寫的服務(wù)器端的可執(zhí)行程序稱為CGI程序 CGI的主要功能就是在Web服務(wù)器程序和CGI程序之間傳遞信息 1 Web瀏覽器向Web服務(wù)器發(fā)出請(qǐng)求 該請(qǐng)求含請(qǐng)求服務(wù)的類型 服務(wù)程序路徑 CGI程序名稱及用戶數(shù)據(jù)等 CGI的工作方式圖 2 Web服務(wù)器通過CGI定義的通信接口 把用戶發(fā)來的請(qǐng)求通過標(biāo)準(zhǔn)輸入 包括環(huán)境變量 命令參數(shù)等 發(fā)送給CGI程序 3 CGI程序解析和處理用戶請(qǐng)求 打開同DBMS的連接 與DBMS交互 按照用戶的需求 對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢或更新 4 CGI程序可根據(jù)從數(shù)據(jù)庫(kù)中檢索所得到的數(shù)據(jù)生成動(dòng)態(tài)的HTML文檔 通過標(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ǔ)言編寫 如C C Delphi VisualBasic或Perl等 2 CGI的跨平臺(tái)性能極佳 CGI的應(yīng)用程序可以移植到絕大部分操作系統(tǒng)上 3 CGI開發(fā)的比較早 相對(duì)比較成熟 因此 目前幾乎所有的Web服務(wù)器均支持CGI 4 CGI方法的缺點(diǎn) 1 最大的缺點(diǎn)是需要消耗大量的系統(tǒng)資源 2 CGI程序開發(fā)復(fù)雜 需要許多底層開發(fā)的知識(shí) 編寫比較困難 3 數(shù)據(jù)傳輸?shù)姆椒ú环€(wěn)健 效率低下 4 不具備事務(wù)功能 5 安全性差 缺少用戶訪問控制 對(duì)數(shù)據(jù)庫(kù)難以設(shè)置安全訪問權(quán)限 三 WebAPI 為了克服CGI的局限性 一種基于共享CGI程序的改進(jìn)方案應(yīng)運(yùn)而生 這就是應(yīng)用程序編程接口WebAPI 1 WebAPI概述 WebAPI是某個(gè)Web服務(wù)器開發(fā)商為其產(chǎn)品用戶開發(fā)類似于CGI程序的服務(wù)器端擴(kuò)展程序所提供的專用編程接口 用戶利用WebAPI可以完成CGI程序所能實(shí)現(xiàn)的功能 并且維持服務(wù)器較好的性能 2 WebAPI的優(yōu)缺點(diǎn) 用WebAPI開發(fā)程序 性能大大優(yōu)于CGI程序 WebAPI的出現(xiàn)解決了CGI的低效問題 但WebAPI的缺陷也是很明顯的 1 開發(fā)API程序比開發(fā)CGI程序復(fù)雜得多 2 各種不同的API互不兼容 缺乏一個(gè)統(tǒng)一的業(yè)界標(biāo)準(zhǔn) 用某種API編寫的程序只能在特定的Web服務(wù)器上運(yùn)行 使用范圍受到極大的限制 四 ODBC ODBC是 開放數(shù)據(jù)庫(kù)互連 OpenDatabaseConnectivity 的簡(jiǎn)稱 ODBC是Microsoft公司提出的應(yīng)用程序通用編程接口標(biāo)準(zhǔn) 用于對(duì)數(shù)據(jù)庫(kù)的訪問 ODBC為數(shù)據(jù)庫(kù)用戶和開發(fā)人員屏蔽了異構(gòu)環(huán)境的復(fù)雜性 提供了數(shù)據(jù)庫(kù)訪問的統(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)用程序利用相同的源代碼就可訪問不同的數(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)性 也就是說 用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)等組成 客戶端數(shù)據(jù)庫(kù)應(yīng)用程序提供系統(tǒng)與用戶的界面 是用宿主語(yǔ)言 ODBC函數(shù)和SQL語(yǔ)句編寫的訪問數(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)用程序訪問的調(diào)用函數(shù)庫(kù) 應(yīng)用程序通過這些函數(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 終止通過釋放語(yǔ)句句柄函數(shù) 釋放連接句柄函數(shù) 釋放環(huán)境句柄函數(shù)的執(zhí)行 釋放各種資源 五 JDBC JDBC是SUN公司針對(duì)Java語(yǔ)言提出的與數(shù)據(jù)庫(kù)連接的API標(biāo)準(zhǔn) 與ODBC類似 JDBC是特殊類型的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由一群類和接口組成 通過調(diào)用這些類和接口所提供的方法 Java程序可以連接不同的數(shù)據(jù)庫(kù) 對(duì)數(shù)據(jù)庫(kù)下達(dá)SQL命令并取得行結(jié)果 JDBC主要有兩種接口 面向程序開發(fā)人員的JDBCAPI和面向底層的JDBCDriverAPI JDBCAPI是面向程序開發(fā)人員的 對(duì)用戶友好的 高級(jí)接口 它定義了Java中的類 用來表示數(shù)據(jù)庫(kù)連接 SQL指令 結(jié)果集合 數(shù)據(jù)庫(kù)圖元數(shù)據(jù)等 通過驅(qū)動(dòng)程序管理器 JDBCAPI可以利用不同的驅(qū)動(dòng)程序連接不同的數(shù)據(jù)庫(kù)系統(tǒng) JDBCDriverAPI是面向驅(qū)動(dòng)程序開發(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)等組成 與ODBC一樣 JDBC的體系結(jié)構(gòu)同樣有一個(gè)JDBC驅(qū)動(dòng)程序管理器作為Java應(yīng)用程序與數(shù)據(jù)庫(kù)的中介 它把對(duì)數(shù)據(jù)庫(kù)的訪問請(qǐng)求轉(zhuǎn)換和傳送給下層的JDBC驅(qū)動(dòng)程序 或者轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)的固有調(diào)用 更多的實(shí)現(xiàn)方式是通過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)程序的類型 JDBC驅(qū)動(dòng)程序可分為以下四個(gè)種類 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訪問 這類驅(qū)動(dòng)程序的特色是必須在使用者端的計(jì)算機(jī)上事先安裝好ODBC驅(qū)動(dòng)程序 然后通過JDBC ODBC的調(diào)用方法 把JDBC操作翻譯成對(duì)應(yīng)的ODBC調(diào)用 進(jìn)而通過ODBC類存取數(shù)據(jù)庫(kù) 2 本地API 這種類型的驅(qū)動(dòng)程序也必須先在客戶機(jī)上安裝好特定的驅(qū)動(dòng)程序 然后通過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訪問 必須處理Web所提出的安全性 通過防火墻的訪問等方面的額外要求 這種驅(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)程序 這種類型的驅(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)閉連接 六 ADO ActiveX數(shù)據(jù)對(duì)象 ActiveXDataObject 簡(jiǎn)寫為ADO 是允許用戶與數(shù)據(jù)存儲(chǔ)進(jìn)行交互的組件 是ASP的內(nèi)置組件之一 通常也稱ADO組件 1 ADO概述 ADO是Windows的開放服務(wù)體系的標(biāo)準(zhǔn)組成部分 是人們廣泛接受的用于數(shù)據(jù)庫(kù)訪問的應(yīng)用程序接口 是一項(xiàng)容易使用并且可擴(kuò)展的將數(shù)據(jù)庫(kù)訪問添加到Web頁(yè)的技術(shù) ADO并不是一種新技術(shù) 而是采用現(xiàn)有的數(shù)據(jù)庫(kù)訪問技術(shù) 并把這些不同的數(shù)據(jù)庫(kù)訪問技術(shù)融合在一起 形成一種適應(yīng)需要的方法 它提供了一個(gè)簡(jiǎn)單的程序化模型和完善的數(shù)據(jù)處理功能 2 ADO對(duì)象模型 ADO是采用層次框架實(shí)現(xiàn)的 其層次結(jié)構(gòu)如圖所示 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ì)象 用來記錄連接過程中所發(fā)生的錯(cuò)誤信息 Command對(duì)象包含了一個(gè)特有的Parameters集合和一個(gè)Parameter對(duì)象 用來傳遞Command對(duì)象所需的命令參數(shù) Recordset對(duì)象包含了一個(gè)Fields集合和一個(gè)Field對(duì)象 用來記錄Recordset對(duì)象中各個(gè)字段的相關(guān)屬性 在ADO的7個(gè)對(duì)象中 Connection對(duì)象 Command對(duì)象和Recordset對(duì)象是使用最多的三個(gè)主要對(duì)象 通過這些對(duì)象與集合 用戶可以很方便地建立數(shù)據(jù)庫(kù)連接 執(zhí)行SQL查詢以及存取查詢結(jié)果等 2 ADO對(duì)象模型 ADO各個(gè)對(duì)象之間的相互關(guān)系圖 兩個(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ù)的任何操作都要通過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ǔ)過程 4 Field對(duì)象 域?qū)ο驲ecordset對(duì)象有一個(gè)十分有用的對(duì)象集合Fields Fields由多個(gè)Field對(duì)象組成 Field對(duì)象代表一列普通數(shù)據(jù)類型數(shù)據(jù) 每個(gè)Field對(duì)象對(duì)應(yīng)于Recordset對(duì)象中的一列 5 Parameter對(duì)象 參數(shù)對(duì)象代表SQL存儲(chǔ)過程或有參數(shù)查詢中的一個(gè)參數(shù) 3 ADO對(duì)象功能 6 Property對(duì)象 屬性對(duì)象代表數(shù)據(jù)提供者的具體屬性 ADO對(duì)象有兩種類型的屬性 內(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ò)誤 用來表示方法調(diào)用失敗所產(chǎn)生的某個(gè)錯(cuò)誤 4 ADO和數(shù)據(jù)庫(kù)的連接 通過ADO訪問數(shù)據(jù)庫(kù)有兩種途徑 一種是通過ODBC驅(qū)動(dòng)程序 另一種是通過數(shù)據(jù)庫(kù)專用的OLEDBProvider 后者有更高的訪問效率 七 ADO NET ADO NET是微軟的新一代數(shù)據(jù)訪問標(biāo)準(zhǔn) 它是為了廣泛的數(shù)據(jù)控制而設(shè)計(jì)的 而不僅僅為數(shù)據(jù)庫(kù)應(yīng)用 所以使用起來比以前的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ù)訪問對(duì)象模型ADO NET ADO NET用微軟 NET框架的托管代碼創(chuàng)建 這意味著它可以享受到類型安全和內(nèi)存管理環(huán)境的種種好處 使之成為優(yōu)于ADO的一個(gè)更為穩(wěn)健的數(shù)據(jù)庫(kù)訪問平臺(tái) 作為一種數(shù)據(jù)庫(kù)訪問框架 ADO NET在ADO的基礎(chǔ)上進(jìn)行了重新設(shè)計(jì) 使它能處理當(dāng)今n層的Web應(yīng)用程序所要求的非連接數(shù)據(jù)體系結(jié)構(gòu) 總之ADO NET是在ADO的基礎(chǔ)上發(fā)展起來的 但又不是簡(jiǎn)單的升級(jí) 它在簡(jiǎn)化編程 維護(hù)和效能方面都做了相當(dāng)大的改進(jìn) ADO NET是一項(xiàng)全新的技術(shù) 需要采用一種新的思維模式來對(duì)待 2 ADO NET模型 ADO NET提供了功能強(qiáng)大的數(shù)據(jù)訪問接口 其數(shù)據(jù)的連接有兩種方式 斷開連接與直接連接 因此ADO NET對(duì)象模型分為 連接的對(duì)象 和 斷開連接的對(duì)象 兩部分 連接的對(duì)象 主要有Connection對(duì)象 Command對(duì)象 DataReader對(duì)象等 這些對(duì)象直接與數(shù)據(jù)庫(kù)通信 以管理連接和事務(wù) 以及從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)和向數(shù)據(jù)庫(kù)提交所做的更改 斷開連接的對(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ù)提供程序是數(shù)據(jù)庫(kù)的訪問接口 負(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是專門為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(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ì)特定類型數(shù)據(jù)源的托管訪問 1 SQLServer NETFramework 這個(gè)數(shù)據(jù)提供者專用于SQLServer數(shù)據(jù)庫(kù) 它使用SQL快速的 本地的TCP IP接口 提供快速 健壯和可靠的訪問SQLServer的方法 可以直接訪問SQLServer而不用添加OLEDB或ODBC層 因此它是輕量的 并具有良好的性能 2 OLEDB NETFramework OLEDB數(shù)據(jù)提供程序可使用任何OLEDB數(shù)據(jù)提供程序來處理數(shù)據(jù) 但是這個(gè)提供者必須使用COMInterop層 因此 在 NETFramework中使用OLEDB時(shí) 將會(huì)增加系統(tǒng)的額外開銷 通常 人們使用OLEDB NET數(shù)據(jù)提供者與Access數(shù)據(jù)庫(kù) MicrosoftExchange進(jìn)行通信 3 Oracle NETFramework 該數(shù)據(jù)提供程序支持使用Oracle客戶端軟件提供的Oracle調(diào)用接口 OC 訪問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 也不是通過OLEDB驅(qū)動(dòng)程序能夠訪問的其他數(shù)據(jù)源 則惟一的選擇就是使用ODBCProviderfor NET ODBC NETFramework數(shù)據(jù)提供程序使用本機(jī)ODBC驅(qū)動(dòng)程序管理器 DM 啟用數(shù)據(jù)訪問 微軟的 NETODBCProvider是為了向后兼容而采取的措施 它不是一個(gè)高性能的數(shù)據(jù)提供者 4 ADO NET和ADO的比較 因?yàn)锳DO NET是從ADO發(fā)展而來的 它與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)要訪問的數(shù)據(jù)來自多個(gè)關(guān)聯(lián)的表時(shí) ADO NET比ADO對(duì)數(shù)據(jù)的訪問更優(yōu)越 因?yàn)閿?shù)據(jù)集可以包含這樣的數(shù)據(jù) 而記錄集則不能 2 數(shù)據(jù)訪問 ADO和ADO NET之間的另一個(gè)重要差別在于它們數(shù)據(jù)訪問方式不同 ADO通過MoveNext方法順序掃描記錄集的行 而在ADO NET中 數(shù)據(jù)集 DataSet 除了支持順序訪問之外 還允許對(duì)數(shù)據(jù)表中的行號(hào)進(jìn)行隨機(jī)訪問 相比之下 在ADO NET中數(shù)據(jù)訪問變得更加容易 更加快速 3 斷開連接方式的數(shù)據(jù)訪問 在ADO中 記錄集也可以實(shí)現(xiàn)斷開連接方式的數(shù)據(jù)訪問 但是這種連接方式效率不高 而且不是徹底的斷開連接方式 而ADO NET則使用數(shù)據(jù)集完全實(shí)現(xiàn)了與數(shù)據(jù)源的斷開連接方式 ADO通過調(diào)用OLEDB提供者與數(shù)據(jù)庫(kù)通信 而ADO NET則使用數(shù)據(jù)適配器與數(shù)據(jù)庫(kù)進(jìn)行通信 這個(gè)適配器可以采用不同的方式與不同類型的數(shù)據(jù)源進(jìn)行通信 4 在應(yīng)用程序之間共享數(shù)據(jù) ADO通過COM調(diào)度機(jī)制傳輸記錄集 而ADO NET則使用XML以數(shù)據(jù)集的形式傳輸數(shù)據(jù) 同COM調(diào)度相比 使用XML傳輸數(shù)據(jù)具有許多優(yōu)點(diǎn) 更豐富的數(shù)據(jù)類型 更高的性能 能夠穿透防火墻等 8 5動(dòng)態(tài)頁(yè)面開發(fā)技術(shù) 第8章Web數(shù)據(jù)庫(kù)技術(shù) 教學(xué)內(nèi)容 一 ASP技術(shù) ASP ActiveServerPages 動(dòng)態(tài)服務(wù)器主頁(yè) 是目前非常流行的開放式Web服務(wù)器應(yīng)用程序開發(fā)技術(shù) ASP屬于ActiveX技術(shù)中的服務(wù)器端技術(shù) ASP中的命令和Script語(yǔ)句都是由服務(wù)器來解釋執(zhí)行的 執(zhí)行結(jié)果產(chǎn)生動(dòng)態(tài)生成的Web頁(yè)面并送到瀏覽器 1 ASP文件 ASP通過擴(kuò)展名為 asp的ASP文件來實(shí)現(xiàn) 一個(gè)ASP文件相當(dāng)于一個(gè)可執(zhí)行文件 因此必須放在Web服務(wù)器上有可執(zhí)行權(quán)限的目錄下 ASP文件是一個(gè)文本文件 它可以包括下列元素的任意組合 文本 text HTML標(biāo)記 tags Script命令 2 ASP的工作流程 當(dāng)用戶通過瀏覽器向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)行處理 若腳本中含有訪問數(shù)據(jù)庫(kù)的請(qǐng)求 就通過ODBC或OLEDB與后臺(tái)數(shù)據(jù)庫(kù)連接 由數(shù)據(jù)庫(kù)訪問組件執(zhí)行訪庫(kù)操作 它依據(jù)訪問數(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相似 用戶可以混合使用PHP和HTML編寫Web頁(yè)面 當(dāng)訪問者瀏覽到該頁(yè)面時(shí) 服務(wù)端會(huì)首先對(duì)頁(yè)面中的PHP命令進(jìn)行處理 然后把處理后的結(jié)果連同HTML內(nèi)容一起傳送到訪問端的瀏覽器 PHP腳本語(yǔ)言的語(yǔ)法結(jié)構(gòu)與C語(yǔ)言和Perl語(yǔ)言的語(yǔ)法風(fēng)格非常相似 二 PHP技術(shù) 與ASP不同的是 PHP是一種源代碼開放程序 擁有很好的跨平臺(tái)兼容性 用戶可以在WindowsNT系統(tǒng)以及許多版本的UNIX系統(tǒng)上運(yùn)行PHP 而且可以將PHP作為Apache服務(wù)器的內(nèi)置模塊或CGI程序運(yùn)行 PHP最大的特點(diǎn)是它強(qiáng)大的數(shù)據(jù)庫(kù)支持功能 使它能夠訪問幾乎目前所有較為流行的數(shù)據(jù)庫(kù)系統(tǒng) 但是一般來說PHP和MYSQL是最佳的搭配 三 Servlet技術(shù) 同其他Web動(dòng)態(tài)頁(yè)面開發(fā)技術(shù)相比 Servlet具有更好的性能和開發(fā)效率 1 Servlet技術(shù)概述 Servlet是用Java語(yǔ)言編寫的運(yùn)行在服務(wù)器端的Java小程序 它在初始化時(shí)裝入Web服務(wù)器的存儲(chǔ)空間 并成為服務(wù)器的一個(gè)組成部分 Servlet使用JavaServletAPI及相關(guān)類編程 ServletAPI能融合在不同的Web服務(wù)器中 2 Servlet的工作流程 當(dāng)啟動(dòng)Web服務(wù)器或Web瀏覽器第一次請(qǐng)求服務(wù)時(shí) 系統(tǒng)自動(dòng)裝入Servlet并使Servlet保持運(yùn)行狀態(tài) 每當(dāng)客戶端發(fā)來請(qǐng)求時(shí) 服務(wù)器都會(huì)啟動(dòng)一個(gè)線程與客戶端交互 Web服務(wù)器收到請(qǐng)求后 加載相應(yīng)的Servlet 同時(shí)把用戶請(qǐng)求信息傳給該Servlet Servlet分析用戶請(qǐng)求信息 生成對(duì)應(yīng)的SQL語(yǔ)句并執(zhí)行 通過JDBC訪問數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù) 獲得響應(yīng)的結(jié)果集 生成HTML頁(yè)面返回到客戶端 四 JSP技術(shù) JSP是由Sun公司倡導(dǎo) 許多公司參與 一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn) 是一種很容易學(xué)習(xí)和使用的 在服務(wù)器端編譯執(zhí)行的Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用程序編程語(yǔ)言 1 JSP文件 JSP的腳本語(yǔ)言采用Java 完全繼承了Java的所有優(yōu)點(diǎn) 在傳統(tǒng)的網(wǎng)頁(yè)HTML文件中加入Java程序片段和JSP標(biāo)記 就構(gòu)成了JSP網(wǎng)頁(yè) JSP文件的擴(kuò)展名通常是 jsp 并且一般放在網(wǎng)頁(yè)存放的地方 2 JSP的工作原理 JSP的工作是基于Servlet的 當(dāng)用戶第一次對(duì)JSP頁(yè)面進(jìn)行請(qǐng)求 Web服務(wù)器首先將它編譯成對(duì)應(yīng)的Servlet 并啟動(dòng)該Servlet的一個(gè)線程與客戶端進(jìn)行交互 以后只要這個(gè)Servlet不丟失 所有客戶端對(duì)該JSP頁(yè)面的請(qǐng)求都是由Servlet的一個(gè)線程響應(yīng)的 Web服務(wù)器會(huì)執(zhí)行該Servlet 將執(zhí)行結(jié)果以HTML格式返回給客戶 3 使用JSP訪問數(shù)據(jù)庫(kù) 使用JSP訪問數(shù)據(jù)庫(kù)有兩種技術(shù)方案 一種是JSP JavaBean JDBC 另外一種是JSP JavaServlet JavaBean JDBC 該技術(shù)方案通過JSP直接實(shí)現(xiàn)對(duì)客戶端的應(yīng)答 當(dāng)客戶的請(qǐng)求提交到JSP時(shí) 通過JavaBean將運(yùn)行的結(jié)果再退回給客戶端 盡管這種技術(shù)方案十分適合簡(jiǎn)單應(yīng)用的需要 它卻不能滿足復(fù)雜的大型應(yīng)用程序的實(shí)現(xiàn) 它吸取了JSP和JavaServlet技術(shù)各自的突出優(yōu)點(diǎn) 用JSP實(shí)現(xiàn)表示層 讓Servlet完成深層次的處理任務(wù) 即實(shí)現(xiàn)應(yīng)用層 該方案清晰地分離了表達(dá)和內(nèi)容 明確了角色的定義以及應(yīng)用程序開發(fā)者與網(wǎng)頁(yè)設(shè)計(jì)者的分工 事實(shí)上 項(xiàng)目越復(fù)雜 使用第二種技術(shù)方案的好處就越大 4 JSP的優(yōu)點(diǎn) JSP的優(yōu)點(diǎn)具體體現(xiàn)在以下方面 1 將內(nèi)容的生成和顯示進(jìn)行分離 2 可重用的組件3 用動(dòng)作標(biāo)識(shí)簡(jiǎn)化頁(yè)面開發(fā)- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Web數(shù)據(jù)庫(kù)技術(shù) Web 數(shù)據(jù)庫(kù)技術(shù) PPT 課件
鏈接地址:http://www.820124.com/p-7178594.html