程式|資料|資料庫 ASP是微軟公司推出的用以取代CGI的新技術,是目前公認的建立Windows NT動態網站最好的工具。它與ADO(Active Data Object,一種新的資料訪問模型)的充分結合,提供了強大的資料庫訪問功能,使之成為進行網上資料庫管理的重要手段。
一、ASP簡介
ASP內含於Internet Information Server(簡稱IIS3.0)中,副檔名以.asp表示。ASP檔案可以用常規的文字編輯器編輯,也可以利用專門的輔助開發工具InterDev進行開發設計,InterDev的優點是將整個Web程式設計(包括網頁設計、ASP程式設計、資料庫管理等)融為一體,比較適合於較大工程項目的開發研製。ASP使用VBScript、JavaScript等指令碼語言作為開發工具,鑲嵌於HTML文本中,使用“<%…%>”將ASP的程式包含起來。當使用者從瀏覽器向Web伺服器提出請求時,Web伺服器會自動將ASP的程式解釋為標準的HTML格式的首頁內容,使用者端只要使用常規可執行HTML程式的瀏覽器,就可瀏覽ASP所設計的首頁內容,因此與瀏覽器無關,並且保證了ASP的來源程式代碼不會外漏。
ASP中包括五個內建的ActiveX伺服器組件和五個內建的對象:Database Access component(資料庫訪問組件)、File Access component(檔案訪問組件)、Ad Rotator component(廣告輪播器組件)、Content Linking component(內容連結組件)、Browser Capabilities component(瀏覽器信組件)以及Request(請求對象)、Server(伺服器對象)、Session(會話對象)、Response(響應對象)、Application(應用程式物件)。在所有ASP組件中,最有用的是資料庫訪問組件,也稱為ActiveX資料對象或ADO。在網站發行集資料庫將使用這個組件及其中包含的對象,以完成對ODBC資料來源的讀寫。
此外,ASP技術的另一個重要特點是,程式員可以利用Java、Visual Basic、 Visual C++等語言製作適應自己特殊需要的ActiveX伺服器組件來擴充ASP的功能,使自己的動態網頁幾乎具有無限的擴充能力,這是傳統的CGI程式所不及的。
二、與ADO結合開發基於WWW的資料庫檢索程式
ASP技術與ADO技術相結合,可以實現基於WWW的資料庫管理功能,使用者可在瀏覽器畫面中檢索、輸入、更新和刪除資料庫資訊,從而建立提供資料庫資訊的首頁內容。ADO主要提供了七個對象和四個集合來完成對於資料庫的管理,包括:Connection、Command、Parameter、Recordset、Field、Property、Error以及Fields、Properties、Parameters、Errors。Connection對象用來建立與資料庫的串連,Command對象完成對資料庫的操作,Recordset對象可以查看或操作資料庫中返回的資料。而Field 對象和Fields集合允許對目前記錄的每一個欄位進行操作,Parameter 對象和Parameters集合為Command對象提供資訊和資料,Property 對象和Properties集合為Connection、Command、 Recordset、Field對象的特性提供資訊,Error對象和Errors集合在錯誤發生時提供錯誤資訊。
下面介紹開發資料庫檢索程式的基本設計方法:
⒈建立資料庫源名(DSN)。DSN是通過ODBC建立,由ODBC使用和識別的、用以串連應用程式和後台資料庫的資料庫邏輯名。具體建立ODBC資料來源的方法可參閱有關資料,這裡不再介紹。假定已為一個SQL Server資料庫建立了取名為“BOOK”的 ODBC資料來源。
⒉建立資料庫連結(Connection)。通過伺服器對象的CreateObject方法,可以建立Connection對象和使用變數接受對象引用。一旦連線物件建立之後,它就可用來開啟到任何ODBC資料來源的串連。如下∶
dim conn ‘申明變數
Set Conn=Server.CreatObject("ADODB.Connection") ‘建立連結化物件
Conn.Open "book",IUSR_TSG01, "" ‘開啟到ODBC的連結,其中IUSR_TSG01為授權的使用者ID號,使用者口令未加設定。程式員應根據自己的情況進行更替。
⒊建立資料對象(Recordset)。Recordset 是ADO中比較複雜的對象,有許多的屬性和方法,包括:Eof(檔案尾)、Bof(檔案頭)、Absolutepage(絕對頁)、Recordcount(記錄計數) 、Pagecount(頁計數)等屬性以及MoveFirst(移到第一條記錄) 、MoveLast(移到最後一條記錄) 、 MoveNext(移到下一條記錄) 、 MovePrevious(移到上一條記錄)等常用方法。資料對象與ASP的Session對象結合,還可以實現檢索結果的分頁處理。
Dim Rs ‘申明變數
Set Rs=Server.CreatObject("ADODB.Recordset") ‘建立資料對象
Rs.PageSize=10 ‘設定一頁所顯示的記錄數
⒋操作資料庫。ADO通過執行標準的SQL語句實現檢索功能,因此首先要定義SQL查詢語句,然後執行該查詢命令,最終形成一個檢索結果集合。
Dim sql ‘申明變數
sql="select * from publication where title like 'ASP%%'" ‘定義SQL查詢語句,檢索資料庫的publication表中書名以ASP開頭的所有圖書的記錄
Const adOpenkeyset=1 ‘定義Recordset的類型
Rs.Open Sql,conn, adOpenkeyset ‘執行sql語句,在資料對象Rs中儲存檢索結果。
⒌在ASP中引用返回結果。假如準備在瀏覽器上顯示檢中的圖書資訊,可以採用以下兩種方法:
<% Response.write(Rs.("Title"))%>或
<%=Rs("Title")%>
⒍關閉資料庫物件和連結化物件。在程式結束前一定要關閉ADO對象,釋放伺服器資源。如下:
Rs.close
Conn.close
Set Rs=nothing
Set Conn=nothing
下面是一個極其簡單的檢索程式,希望能夠協助大家理解一些概念。
Example.asp
<html>
<head>
<title>ASP資料庫檢索執行個體</title>
</head>
<%
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "book"
Sql= "select * from publication where title like 'ASP%%'"
Dim Rs
Set Rs=Server.CreateObject("ADODB.recordset")
Const adOpenkeyset=1
Rs.Open Sql,Conn, adOpenkeyset
%>
<strong>檢索詞命中率:<%=Rs.Recordcount%><br><br>
<select size=8>
<%
Do while not Rs.eof
%>
<option><% =Rs("title")%></option>
<%
rs.movenext
loop
%>
</select>
<%
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
</body>
</html>
本人利用ASP技術開發了煙台大學圖書館網上書目檢索程式,實踐證明該方法簡單、、實用、高效,是很值得學習的一種方法。