金 晶
WWW是目前Internet上發(fā)展最快的領(lǐng)域,也是Inernet網(wǎng)上最重要的信息檢索手段。早期的WEB頁面主要是用來傳遞靜態(tài)的HTML文檔,后來由于CGI接口、VBScript和JavaScript語言的引入,特別是近幾年發(fā)展起來的ASP技術(shù),使得WEB頁面可以方便傳播動態(tài)信息。借助ASP技術(shù),可以設(shè)計出具有聲音、動畫、圖形、圖像和各種特殊效果的WEB頁面,以及方便的訪問數(shù)據(jù)庫。
一、ASP技術(shù)
1.ASP工作原理
ASP,是Active Server Pages的縮寫,即“服務(wù)器端動態(tài)網(wǎng)頁”。它是基于WEB的一種編程技術(shù),能夠把HTML文件、腳本命令以及COM組件組合在一起,形成一個能夠在服務(wù)器端運行的動態(tài)WEB應(yīng)用程序,并能夠按照用戶的要求制作出標(biāo)準(zhǔn)的HTML頁面?zhèn)鬟f給客戶端瀏覽器。
有了ASP,就不必?fù)?dān)心用戶的瀏覽器是否能夠讀懂動態(tài)網(wǎng)頁中所編寫的代碼,因為所有的程序都在服務(wù)器端執(zhí)行。當(dāng)程序執(zhí)行完畢后,服務(wù)器端執(zhí)行的結(jié)果返回給客戶端瀏覽器,這樣就減輕了客戶端瀏覽器的負(fù)擔(dān),大大提高了交互的速度。
2.ASP的運行環(huán)境
目前,ASP可運行在以下三種環(huán)境:Windows NT(2000 Server)+IIS4.0(Internet Information Server)以上;Windows NT workstation +Peer Web Server;Windows95/98+PWS(Personal Web Server)。
3.ASP文件的建立
ASP的程序代碼簡單、通用,文件名由.asp結(jié)尾,通常由四個部分構(gòu)成:標(biāo)準(zhǔn)的HTML標(biāo)記;ASP語法命令:位于<%%>之間;服務(wù)器端的include語句;腳本語言。
4.ASP的內(nèi)置對象
在面向?qū)ο缶幊讨?對象是具有屬性(數(shù)據(jù))和方法(行為方式)的實體。ASP中提供了六個內(nèi)置對象供用戶直接調(diào)用,它們分別是:Application對象,控制服務(wù)器端應(yīng)用程序的啟動和終止?fàn)顟B(tài),并保存整個應(yīng)用程序過程中的信息;Request對象,從用戶端獲取信息傳遞給服務(wù)器,它是ASP讀取用戶輸入的主要方法;Response對象,服務(wù)器將輸出的內(nèi)容發(fā)送到客戶端;Server對象,提供服務(wù)器的方法和屬性;Session對象,存儲特定的用戶會話所需的信息;Object Context對象,配合服務(wù)器進(jìn)行分布事務(wù)處理。
二、ASP中的數(shù)據(jù)庫訪問
在ASP中,利用ADO(ActiveX Data Objects)可以方便地訪問數(shù)據(jù)庫,很好地對數(shù)據(jù)庫進(jìn)行處理。筆者通過一個實例,具體闡述ASP利用ADO訪問數(shù)據(jù)庫的過程。在該實例中,用戶希望通過網(wǎng)頁能夠訪問服務(wù)器中的teacher數(shù)據(jù)庫中的Information數(shù)據(jù)表,然后將該表中的所有數(shù)據(jù)顯示在返回表格中,具體步驟如下:
1.定義數(shù)據(jù)源
在WEB服務(wù)器上,打開“控制面板”,選中“ODBC”,在“系統(tǒng)DSN”下選“添加”,選定數(shù)據(jù)庫種類、名稱、位置等。該實例數(shù)據(jù)庫種類是“SQL Server”,名稱是teacher。
2.創(chuàng)建ADO的對象
ASP技術(shù)中的ADO對象組件作為用戶快速訪問數(shù)據(jù)庫的最簡便方式,只要使用ADO中的兩個最基本的對象Connection和Recordset對象,就能夠?qū)崿F(xiàn)對數(shù)據(jù)庫的訪問。具體來說,Connection對象的功能是建立和特定數(shù)據(jù)庫的連接,而Recordset對象的功能則是取得從該數(shù)據(jù)庫中返回的查詢數(shù)據(jù)。首先,應(yīng)為Connection和Recordset對象創(chuàng)建各自的對象實例:
<%SetConn=Server.CreateObject(”ADODB.Connection”)%>
<%SetRS=Server.CreateObject(”ADODB.Recordset”)%>
其中,RS和Conn分別是對象實例名稱,用戶可以自行定義。這樣就成功地創(chuàng)建了兩個空的Connection和Recordset對象。
3.建立與數(shù)據(jù)庫的連接
使用Connection對象的Open方法建立與特定數(shù)據(jù)庫的連接,Connection對象的Open方法有3個參數(shù)選項,分別為目標(biāo)數(shù)據(jù)庫的名稱、登錄用戶名和口令,語法為ConnOpenConnectionString,UserID,Password。其中,ConnectionString參數(shù)表示與數(shù)據(jù)源建立的相關(guān)信息,如果用戶已經(jīng)成功建立了該數(shù)據(jù)庫的DNS,就可以直接的使用該DNS。另外兩個參數(shù)登錄用戶名和口令為可選項,如果用戶在建立數(shù)據(jù)連接的DNS時已經(jīng)設(shè)定了登錄用戶名和口令,就可以省略這兩個參數(shù)項。在此,用戶使用Connection對象的Open方法與teacher數(shù)據(jù)庫建立連接,具體形式為<% Conn.Open “teacher”%>。
4.使用Recrodset對象獲取數(shù)據(jù)
用戶希望取得teacher數(shù)據(jù)庫中Information數(shù)據(jù)表中的所有數(shù)據(jù),因此使用最簡單的“Select * From Information”即可。為了使代碼更直觀,容易修改和維護(hù),建議用戶將上述的SQL語句用某個變量代替。具體為
<% SQL=”Select * From Information”%>
其中,SQL為變量名,用戶可以自行定義,然后使用Connection對象中的Execute方法執(zhí)行該SQL語句,并將結(jié)果輸入到Recordset對象中,具體為:
<% SetRS=Conn.Execute(SQL)%>
至此,ADO從數(shù)據(jù)庫中查詢到的所有數(shù)據(jù)被保存到Recordset對象中。
5.檢驗Recordset對象是否為空
在對Recordset對象中的數(shù)據(jù)進(jìn)行進(jìn)一步處理之前,建議用戶最好驗證一下是否確實將查詢結(jié)果數(shù)據(jù)保存到了Recordset對象中。用戶可以使用Recordset對象的BOF和EOF屬性實現(xiàn)驗證功能。BOF如果為真則代表數(shù)據(jù)指正位于首行數(shù)據(jù)之前,如果EOF為真則代表為數(shù)據(jù)指正位于末行數(shù)據(jù)之后,如果兩者皆為真,則說明Recordset對象為空。具體代碼為:
<% if (RS.EOF and RS.BOF) then
response.write “NO records found”
end if %>
6.處理Recordset對象數(shù)據(jù)
在驗證Recordset對象中確實含有查詢返回數(shù)據(jù)之后,用戶就可以按照自己的需要對數(shù)據(jù)進(jìn)行響應(yīng)的處理。通常較為常用的Recordset命令為:
Recordset.Fields.Count:Recordset對象的列數(shù);
Recordset(I).Name:第I列名稱,I由0到Recordset.Fields.Count-1;
Recordset(I)第I列數(shù)據(jù),I由0到Recordset.Fields.Count-1;
Recordset(“列名稱”):讀取指定列的數(shù)據(jù);
Recordset.MoveNext:數(shù)據(jù)指針下移一行;
Recordset.MovePrev:數(shù)據(jù)指針上移一行;
Recordset.MoveFirst:數(shù)據(jù)指針移到第一行;
Recrodset.MoveLast:數(shù)據(jù)指針移到最末一行。
接下來的問題是如何將Recordset對象中的數(shù)據(jù)顯示出來。如果用戶希望以表格的形式顯示數(shù)據(jù),則首先需要ASP頁面中建立表格標(biāo)簽:
<% =RS(I).Name %> |
<% =RS(I)%> |