【文章內(nèi)容簡(jiǎn)介】
s 軟件,也可以在我們的程序中對(duì)一個(gè) Access 的 MDB 數(shù)據(jù)庫加、刪、改記錄。而且我們根本不用知道這個(gè)數(shù)據(jù)庫是放在哪里 的。我們只要寫出SQL 語句, ODBC 驅(qū)動(dòng)程序就會(huì)幫我們做一切事情。我們?cè)诮o ODBC 驅(qū)動(dòng)程序傳 SQL指令時(shí),即是用 DSN 來告訴它到底操作的是哪一個(gè)數(shù)據(jù)庫。如果數(shù)據(jù)庫的平臺(tái)變了,比如我們改用了 SQL Server 的數(shù)據(jù)庫,只要其中表的結(jié)構(gòu)沒變,我們就不用改寫我們的程序,只要重新在系統(tǒng)中配置 DSN 就行了。由此可見, DSN 是應(yīng)用程序和數(shù)據(jù)庫之間的橋梁。 下面 以 Microsoft Access 為例,建立數(shù)據(jù)源 :在 C:\myfile\文件夾里創(chuàng)建了一個(gè)名為 的數(shù)據(jù)庫文件,其注冊(cè)步驟如下: 控制面板里找到“ ODBC 數(shù)據(jù)源”圖標(biāo),打開數(shù)據(jù)源管理器的交互界面; 我們?cè)谶@選擇“用戶 DSN”; “添加”按鈕,在彈出的數(shù)據(jù)源管理器對(duì)話框里,為自己所要?jiǎng)?chuàng)建的數(shù)據(jù)源選擇一個(gè)驅(qū)動(dòng)程序,本文的數(shù)據(jù)庫文件是用 Microsoft Access 創(chuàng)建的,所以要選擇“ Microsoft Access Driver (* .mdb)”; “完成”按鈕后,進(jìn)入一個(gè)標(biāo)題為“ ODBC Microsoft Access 安裝”的界面,在 其 中 設(shè) 置 “ 數(shù) 據(jù) 源 名 ” 為 “ mydatanews ”, 選 取 數(shù) 據(jù) 庫 文 件 “ C:\myfile\”,然后確定即可。 二、創(chuàng)建數(shù)據(jù)庫鏈接 (Connection) 鏈接用以保持一些關(guān)于正在訪問的數(shù)據(jù)的一些狀態(tài)信息,以及鏈接者信息。ASP 文件中如果要訪問數(shù)據(jù),必須首先創(chuàng)建與數(shù)據(jù)庫的鏈接,其語法如下: set Conn=(“ ” ) 這條語句創(chuàng)建了鏈接對(duì)象 Conn,接下來: connstr=Provider=。=amp。ath(amp。dbamp。) connstr 這條語句打開鏈接,用到了 DSN,本例為“ connstr”。 以上兩個(gè)步驟缺一不可,因?yàn)殒溄訉?duì)象的創(chuàng)建與打開是兩回事,只有打開了才真正可以使用。 三、創(chuàng)建數(shù)據(jù)對(duì)象 (Record Set) ADO 中的數(shù)據(jù)對(duì)象通常保存的是查詢結(jié)果。 Record Set 是 ADO 中最復(fù)雜的對(duì)象,有許多屬性和方法。 Record Set 保存的是一行行的記錄,并標(biāo)有一個(gè)當(dāng)前記錄。以下是創(chuàng)建方法: Set Record Set=(sqtStr) 這條語句創(chuàng)建并打開了對(duì)象 Record Set,其中 Con 是先前創(chuàng)建的鏈接對(duì)象, rs 是一個(gè)字串,代表一條標(biāo)準(zhǔn)的 SQL 語句。例如: rs=“ SELECT * FROM shop_books” Set Record Set=(rs) 這條語句執(zhí)行后,對(duì)象 Record Set 中就保存了表 tab1 中的所有記錄。 四、操作數(shù)據(jù)庫 我們通過調(diào)用鏈接對(duì)象的 Execute 方法來將查詢結(jié)果返回給一個(gè)數(shù)據(jù)對(duì)象或進(jìn)行插入、刪除等操作。例如: rs=“ INSERT INTO tab1 VALUES(1,2)” (rs) /執(zhí)行插入操作 五、關(guān)閉數(shù)據(jù)對(duì)象和鏈接對(duì)象 在使用了 ADO 對(duì)象之后要關(guān)閉它,因?yàn)樗褂昧艘欢ǖ姆?wù)器資源。通過調(diào)用方法 close 實(shí)現(xiàn)關(guān)閉,然后再釋放它。 Record Set Record Set=Nothing /關(guān)閉創(chuàng)建的數(shù)據(jù)對(duì)象 Set mConn=Nothing /關(guān)閉創(chuàng)建的鏈接對(duì)象 ASP 與 CGI的比較 CGI(Common Gateway Interface,通用網(wǎng) 關(guān)接口 )也是 Inter 上一種功能強(qiáng)大的 Web 頁面技術(shù),其工作方式有別于 ASP。我們現(xiàn)對(duì)二者進(jìn)行比較。 Active Server Pages 開發(fā) Web 應(yīng)用程序的特點(diǎn): 1. 完全嵌入 HTML,與 HTML、 Script 語言完美結(jié)合。 2. 無須手動(dòng)編譯和鏈接程序。 3. 面向?qū)ο?,并可擴(kuò)展 ActiveX Server 組件功能。 4. 使用腳本語言( JavaScript、 VBScript 或 PERL)編寫。 5. 存取數(shù)據(jù)庫輕松容易(使用 ADO 組件)。 6. 可使用任何語言編寫自己的 ActiveX Server 組件。 7. 無瀏覽器兼容問題。 8. 程序 代碼隱藏,客戶端僅能看到 ASP 輸出的 HTML 文件。 9. 縮短 Web 開發(fā)時(shí)間。 相比之下,使用 CGI 開發(fā) Web 應(yīng)用程序具有以下缺點(diǎn) : 1. 不易與 HTML 文件集成。 2. 須使用其他較復(fù)雜的語言來開發(fā) CGI 程序。 3. 程序開發(fā)時(shí)間較長(zhǎng)。 4. 存取數(shù)據(jù)庫不容易。 每個(gè) CGI 程序被不同用戶執(zhí)行時(shí)都得重新執(zhí)行一次,并占去 Server 的一個(gè)端口( Port),降低 Server 效率。 ASP 在數(shù)據(jù)庫訪問、與 HTML 的集成、提高服務(wù)器的效率等諸多方面都優(yōu)于 CGI,更適應(yīng) Web 應(yīng)用程序開發(fā)的需要,因此本文選擇了 ASP 作為個(gè)性化頁面生成器的開發(fā)工具。 第三章 數(shù)據(jù)庫設(shè)計(jì) 利用 ASP進(jìn)行動(dòng)態(tài)數(shù)據(jù)查詢 為了將從數(shù)據(jù)庫中獲得的數(shù)據(jù)顯示在客戶端瀏覽器中,需要在 ASP文件中加入 Table對(duì)象。 Table對(duì)象可以用來顯示從 Server端數(shù)據(jù)庫中通過 SQL查詢得到的記錄。使用 Dreamweaver等可視化工具可以方便地對(duì) *.ASP文件進(jìn)行用戶界面的設(shè)計(jì)。包括添加 Table對(duì)象、動(dòng)態(tài) GIF文件等。以下是本網(wǎng)站中的一段查詢代碼: % word=request(trim(Keyword)) set records=() if request(select2)=精確 then if request(select1)=科 then sql=select * from kebiao where keID =39。amp。wordamp。39。 or chinesename=39。amp。wordamp。39。 or latinname=39。amp。wordamp。39。 elseif request(select1)=屬 then sql=select * from shubiao where shuID =39。amp。wordamp。39。 or chinesename=39。amp。wordamp。39。 or latinname=39。amp。wordamp。39。 elseif request(select1)=種 then sql=select * from zhongbiao where zhongID =39。amp。wordamp。39。 or chinesename=39。amp。wordamp。39。 or latinname=39。amp。wordamp。39。 elseif request(select1)=標(biāo)本 then sql=select * from specimenbiao where biaoID =39。amp。wordamp。39。 or chinesename=39。amp。wordamp。39。 or latinname=39。amp。wordamp。39。 end if if 0 then 數(shù)據(jù)庫操作失敗 : amp。 end if elseif request(select2)=模糊 then if request(select1)=科 then sql=select * from kebiao where keID like 39。%amp。wordamp。%39。 or chinesename like 39。%amp。wordamp。%39。 or latinname like 39。%amp。wordamp。%39。 elseif request(select1)=屬 then sql=select * from shubiao where shuID like 39。%amp。wordamp。%39。 or chinesename like 39。%amp。wordamp。%39。 or latinname like 39。%amp。wordamp。%39。 elseif request(select1)=種 then sql=select * from zhongbiao where zhongID like 39。%amp。wordamp。%39。 or chinesename like 39。%amp。wordamp。%39。 or latinname like 39。%amp。wordamp。%39。 elseif request(select1)=標(biāo)本 then sql=select * from specimenbiao where biaoID like 39。%amp。wordamp。%39。 or chinesename like 39。%amp。wordamp。%39。 or latinname like 39。%amp。wordamp。%39。 end if if 0 then 數(shù)據(jù)庫操作失敗 : amp。 end if end if sql,connectstr,1,3 % 當(dāng) Web Server處理完用戶的 HTTP請(qǐng)求后 , 將結(jié)果發(fā)送至瀏覽器上 , 用戶就可以看到結(jié)果。 ASP 訪問數(shù)據(jù)庫 ASP 內(nèi)置對(duì)象和組件 ASP提供了功能強(qiáng)大的六個(gè)內(nèi)置對(duì)象和五個(gè)內(nèi)置組件 內(nèi)置對(duì)象: ( 1) Request(請(qǐng)求 ):從前端用戶取得信息 ( 2) Response(響應(yīng) ):將信息送給前端用戶 ( 3) Server(服務(wù)器 ):提供 Web服務(wù)器工具 ( 4) Session(會(huì)話 ):儲(chǔ)存在一次會(huì)話內(nèi)的用戶信息,僅被該用戶訪問 ( 5) Application(應(yīng)用 ):管理所有的會(huì)話信息,供所有用戶共享 ( 6) ObjectContext(對(duì)象上下文 ):配合 Transaction服務(wù)器進(jìn)行分布式事務(wù)處理 前三個(gè)很常用, Request和 Response是用來實(shí)現(xiàn) web Server與瀏覽器交互。Request的一個(gè)重要方法是 ForM(),其作用是提取瀏覽器的用戶輸入信息。如下面的語句可以取得用戶填在文本框里面的內(nèi)容: Request. Form(“nane”) 顯然,這比 CCI等方法所需要的復(fù)雜編程簡(jiǎn)單多了。而輸出要用到 Response的一個(gè)重要方法 Write,如 :“ our message”該語句向?yàn)g覽器輸出了一條消息。 內(nèi)置組件: ( 1)數(shù)據(jù)庫存取組件: ASP提供 ADO來存取具有 ODBC標(biāo)準(zhǔn)的數(shù)據(jù)庫 ( 2)廣告輪顯組件:用來維護(hù)、構(gòu)建 Inter廣告 ( 3)瀏覽器兼容組件:將瀏覽器的功能數(shù)據(jù)提供給服務(wù)器,以便送出適合于各種瀏覽器的 Web頁面 ( 4)文件存取組件:提供文件讀寫的工具 ( 5)文件超鏈接組件:提供對(duì) Web頁面的管理 ASP 訪問數(shù)據(jù)庫工作原理 訪問 Web數(shù)據(jù)庫的技術(shù)有以下幾種方式:公共網(wǎng)關(guān)接口 CGI(Common Gateway Interface)、 Inter Server 應(yīng)用程序編程接口 ISAPI( Inter Server Application Programming Interface)、 Java、 Plugin(插件 )和 ASP技術(shù)。這些技術(shù)都是為了克服HTML靜態(tài)頁面發(fā)展起來的。 ASP是一個(gè)基于 Web服務(wù)器的腳本開發(fā)環(huán)境,在 ASP平臺(tái)上可開發(fā)和運(yùn)行動(dòng)態(tài)的、交互的、高性能的 Web服務(wù)器應(yīng)用程序。 圖 ASP訪問數(shù)據(jù)庫原理圖 圖 ASP訪問數(shù)據(jù)庫工作原理。 ASP程序在 Web服務(wù)器端工作,當(dāng)前端用戶請(qǐng)求一個(gè) ASP主頁時(shí), Web服務(wù)器響應(yīng) HTTP請(qǐng)求并調(diào)用 ASP引擎執(zhí)行該文件并解釋執(zhí)行其中的腳本,若腳本中有訪問數(shù)據(jù)庫請(qǐng)求,立刻通過 ODBC或 ILE DB與相應(yīng)的后臺(tái)數(shù)據(jù)庫相連,同數(shù)據(jù)庫訪問組件 ADO完成操作,最后, ASP根據(jù)訪問數(shù)據(jù)庫的結(jié)果生成 HTML語言的主頁返回給前端用戶,用戶看到的只是HTML網(wǎng)站,而看不到 ASP程序代碼,增強(qiáng)了保密性。 ASP 連接數(shù)據(jù)庫的方法 ASP提供兩種訪問數(shù)據(jù)庫的方法:在第一種方法中每次訪 問數(shù)據(jù)庫都要與數(shù)據(jù)庫連接一次,一旦與數(shù)據(jù)庫建立連接語句就可以對(duì)數(shù)據(jù)進(jìn)行操作;當(dāng)對(duì)數(shù)據(jù)的操作完成,所有相關(guān)的對(duì)象都被關(guān)閉。 與數(shù)據(jù)庫相連的另一種方法是當(dāng)用戶的任務(wù)完成后連接才被關(guān)閉,這是由Global. asp文件所控制。每個(gè)基于 ASP的 inter應(yīng)用可以有一個(gè)存放在應(yīng)用根目錄中的 ,該文件有四個(gè)事件: Applicattionstart, Senssionstart, ApplicattionEnd和 Sessionend用戶與數(shù)據(jù)庫的連接是在 Sessionstart事件中,用Sessionend事件關(guān)閉連接 [1]。 在本網(wǎng)站中用如下代碼來實(shí)現(xiàn) ASP與數(shù)據(jù)庫的連接: % dim connectstr on error resume next Set connectstr = () dri