引言
本文針對ASP程式設計中最基礎、也是最關鍵的部分"資料庫檔案的呼叫"進行說明,同時談談ASP程式設計中資料庫檔案呼叫的一些技巧。
ASP簡介
ASP(Active Server Pages)是微軟於1996年推出的Web應用程式開發技術,它是一種腳本語言、ActiveX元件及HTML語言等的綜合,微軟把它描述為"一個伺服器的腳本環境,在這裡可以產生和運行動態的、互動的、高效能的網路伺服器應用程式"。其主要功能是為產生動態的、互動的網頁伺服器應用程式提供一種強大的方式或技術。其特點是命令和腳本都在伺服器中解釋執行,然後送到客戶端瀏覽器的內容只是標準的HTML頁面。其優點是程式設計簡單易懂,而且方便快速。 ASP在國內的應用程式已非常普遍,相當一部分的動態網站都運用了ASP技術。
ASP資料庫檔案的呼叫
雖然不同的系統可能安裝不同的資料庫驅動程序,但一般的伺服器系統都基本上支援IIS4.0/5.0,所以伺服器系統上至少會有Microsoft Access Driver、Microsoft ODBC for Oracle、SQL Server等3種資料庫驅動程式。因此,伺服器系統至少可以使用Access、Oracle、SQL Server等3種資料庫來從事ASP網頁資料庫設計。由於Microsoft Access 97/2000屬於微軟的Office系列之一,且介面和Office系列軟體相似,學習起來基本上沒什麼障礙,因此,本文將從初學者入門的角度,使用Access資料庫檔案來進行ASP程式設計。
透過Access應用程式製作如圖1的資料庫檔案(friend.mdb)
圖1
那麼,ASP程式設計中呼叫該資料庫檔案有兩種方式,一種為直接在"控制面板"的"資料來源(ODBC)"上進行手動設定;另一種是編程,透過相對路徑調用資料庫文件,這種方式可適用在任何一台伺服器上而不用再進行配置。第一種方式較為簡單、安全,本文所談的是第二種方式。
以下列出ASP程式設計中一般讀取資料庫檔案中表格記錄的方法:
01: <HTML><BODY>
02: <!--#include file="adovbs.inc"-->
03: <%
04: '使用ASP的Connection 物件開啟資料庫,資料庫檔案為上圖的<Friend.mdb>'
05: Dim objConn
06: Set objConn=Server.CreateObject("ADODB.Connection")
07: objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" &_
08: "Data Source=" & Server.MapPath("Friend.mdb")
09: objConn.Open
10: 讀取"data"表的記錄,然後存放在Record set對象
11: Dim objRS
12: Set objRS=Server.CreateObject("ADODB.Recordset")
13: ObjRS.Open "data",objConn,adOpenKeyset,adLockOptimistic,adCmdTable
14: '將目前指標所指到的記錄顯示在瀏覽器上
15: If Not objRS. EOF then
16: Response.Write "編號:"&objRS("編號")& "<BR>"
17: Response. Write "姓名:"&objRS("姓名")& "<BR>"
18: Response. Write "性別:"&objRS("性別")& "<BR>"
19: Else
20: Response.Write "到達資料庫的結尾,已經顯示完所有符合條件的記錄"
21: End If
22: '關閉資料庫連線並釋放物件實例
23: ObjRS. Close
24: Set objRS=Nothing
25: ObjConn.Close
26: Set objConn=Nothing
27: %>
28: </BODY></HTML>
上述程式碼為ASP程式設計中一般開啟Access資料庫檔案的設計步驟。
資料庫檔案呼叫的技巧
(1)事實上,無論換成哪個Access資料庫,開啟資料庫連線與讀取表記錄的步驟是相同的,其中的變數在於資料庫檔案的名稱及表格的名稱,所以可以將上述程序的第3~13行改寫成函數的形式,並存成一個檔案如:ADOFunctions.asp,日後要打開某個資料庫檔案的話,就把該檔案ADOFunctions.asp 裝(include)進來,程式碼如下:
<%
Dim objConn
'變數Filename為資料庫檔案名,變數Table Name為表名Function GetRecordset(FileName,TableName)
'使用ASP的Connection 物件開啟資料庫Set objConn=Server.CreateObject("ADODB.Connection")
objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=" & Server.MapPath("Filename")
objConn.Open
'讀取表的記錄,然後存放在Record set物件"objRS"
Dim objRS
Set objRS=Server.CreateObject("ADODB.Recordset")
ObjRS.Open TableName,objConn,adOpenKeyset,adLockOptimistic,adCmdTable
End Function
%>
由上述程式碼可知,函數名為GetRecordSet,其回傳值是存放了表記錄的Record set物件實例,存成檔案名為ADOFunctions.asp。現在,利用該文件就可以讀取任何資料庫文件的記錄了。如一般讀取資料庫的程式設計可簡化如下:
<HTML><BODY>
<! --#Include file="adovbs.inc"-->
<! --#include file="ADOFunctions.asp"-->
<%
'呼叫GetRecordset函數取得一個Record set物件實F例,然後指派給變數objRS
Dim objRS
Set objRS=GetRecordset("Friend.mdb","data")
'將目前指標所指到的記錄顯示在瀏覽器上If Not objRS.EOF Then
Response.Write "編號:"&objRS("編號")& "<BR>"
Response.Write "姓名:"&objRS("姓名")& "<BR>"
Response.Write "性別:"&objRS("性別")&"<BR>"
Else
Response.Write "到達資料庫的結尾,已經顯示完所有符合條件的記錄"
End If
'關閉資料庫連線並釋放物件實例ObjRS. Close
Set objRS=Nothing
ObjConn.Close
Set objConn=Nothing
%>
</BODY></HTML>
因此,只要在這句程式碼Set objRS=GetRecordset("Friend.mdb", "data")中改變資料庫名稱和表格名稱就可以呼叫任何Access資料庫檔案了,當然,要注意的是,後面的資料庫中每個表格的欄位名稱一定要匹配。
(2)另外,無論換成哪個Access資料庫,開啟資料庫連接與篩選表記錄的步驟也是相同的,其中的變數在於SQL語句(如:"SELECT * FROM data")、資料庫檔案的名稱及表格的名稱。因此同樣道理,可以將這3個變數當作函數的參數,寫出GetSQLRecordset函數,並存成檔案名為ADOSQLFunctions.asp,日後要用到的話,只要在程式最前面把這個檔案Include進來,就可以利用GetSQLRecordset函數開啟資料庫連接,同時也進行篩選表記錄,函數的傳回值是存放了符合SQL語句的Record set物件實例。
代碼如下:
<%
Dim objConn
Dim GetSQLRecordset
Function GetSQLRecordset(strSQL,FileName,TableName)
'使用ASP的Connection 物件開啟資料庫
Set objConn=Server.CreateObject("ADODB.Connection")
objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=" & Server.MapPath("Filename")
objConn.Open
'從表格讀取符合SQL語句的記錄並存放在Record set對象
Set GetSQLRecordset=Server.CreateObject("ADODB.Recordset")
GetSQLRecordset.Open_ strSQL,objConn,adOpenKeyset,adLockOptimistic,adCmdText
End Function
%>
上述程式碼中函數名稱為:GetSQLRecordset,檔案名為ADOSQLFunctions.asp。
現在,利用該檔案就可以呼叫任何Access資料庫的連接,同時對錶記錄進行篩選的操作。以Friend.mdb檔為例,列出表格data中所有的記錄,程式碼如下:
<HTML><BODY>
<!--#include file="adovbs.inc"-->
<!--#include file="ADOSQLFunctions.asp"-->
<%
Dim objRS
Set objRS=GetSQLRecordset("SELECT 編號,姓名,性別from_ data","Friend.mdb","data")
Do While Not objRS.EOF
Response.Write "編號:"&objRS("編號")&"<BR>"
Response.Write "姓名:"&objRS("姓名")&"<BR>"
Response.Write "性別:"&objRS("性別")&"<BR>"
Loop
objRS.Close
Set objRS=Nothing
ObjConn.Close
Set objConn=Nothing
%>
</BODY></HTML>
小結
在ASP編程中,利用好函數往往可以對我們的程式碼簡單明了化,讀取條理也容易維護,同時也可避免大量的重複繁雜的程式碼。像上述的情況,若只是簡單的與資料庫連接,則用第一種情況,將檔案ADORecordset.asp 裝(include)進來就可以了,若要對資料庫中某個表的記錄進行篩選或其他SQL語句操作,則用第二種情況,將檔案ADOSQLRecordset.asp裝進來就可以了。