一、前言
ASP (Active Server Pages) 是伺服器端的腳本編寫環境,它由微軟公司的IIS3.0以上版本支援。它可用於建立動態Web 頁或產生功能強大的網路應用程式。 ASP頁是包含HTML 標籤、文字和腳本指令的檔案。 ASP頁可呼叫ActiveX元件來執行任務,例如連接到資料庫或進行商務計算。透過ASP,可為您的Web頁新增互動內容或用HTML頁構成整個Web應用程序,這些應用程式使用HTML頁作為您的客戶的介面。
二、ASP模型
瀏覽器從Web伺服器上請求.asp檔時,ASP 腳本開始運作。然後Web伺服器呼叫ASP,ASP將全面讀取請求的文件,執行所有腳本指令,並將Web頁傳送給瀏覽器。
ASP提供了一個在HTML頁中使用現有腳本語言如Microsoft VBScript 和Microsoft JScript 的框架。
ASP提供內建對象,這些對象使用戶更容易收集透過瀏覽器請求發送的資訊、回應瀏覽器以及儲存用戶資訊。包括Application、Request、Response、Server、Session 和ObjectContext 物件。其中最常用的為Request、Response 和Server三個對象,它們分別用於從瀏覽器請求資訊、向瀏覽器發送訊息和存取伺服器上對象的屬性和方法。
三、ADO
ASP和後台資料庫連接使用微軟的ADO(ActiveX Data Objects),ADO是一項容易使用且可擴展的將資料庫存取新增至Web頁的技術。可以使用ADO去編寫緊湊簡潔的腳本以便連接到Open Database Connectivity(ODBC)相容的資料庫和OLE DB相容的資料來源。
ADO包含7個內建對象,它們分別為Connection、Command、RecordSet、Fields、Error、Parameters和Properties。透過這些對象,ASP可以完成對後台資料庫的所有操作。
四、ASP呼叫視圖和預存程序
在一般的MIS應用中,會有大量的報表,此時我們可以在後台資料庫編寫對應的視圖或預存過程,用ASP透過ADO呼叫以完成報表工作。下面用一個例子說明對應的操作過程。
1.建立ODBC DSN 檔案
在建立資料庫腳本之前,必須提供一條使ADO定位、標識和與資料庫通訊的途徑。資料庫驅動程式使用Data Source Name (DSN) 定位和識別特定的ODBC相容資料庫,將資訊從Web 應用程式傳遞給資料庫。
2. 呼叫資料庫視圖
存取資料庫資訊的第一步是和資料庫來源建立連線。 ADO提供Connection對象,可以使用該物件建立和管理應用程式和ODBC資料庫之間的連線。
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連線對象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;
UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
Set cmdTemp = Server.CreateObject("ADODB.Command") '建立指令物件
Set rst= Server.CreateObject("ADODB.Recordset") '建立記錄集對象
cmdTemp.CommandText = "Customers "
cmdTemp.CommandType = 2
Set cmdTemp.ActiveConnection = DataConn
rst.Open cmdTemp, , 1, 3 '產生查詢結果
%>
此時,Customers為視圖,從視圖查詢資料與從基底表查詢資料的方法是相同的。
3.呼叫資料庫預存程序
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連線對象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;
PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
Set cmdTemp = Server.CreateObject("ADODB.Command") '建立指令物件
Set rst = Server.CreateObject("ADODB.Recordset") '建立記錄集對象
cmdTemp.CommandText = "dbo.pd_test" '預存程序名稱
cmdTemp.CommandType = 4 '指令類別為4,表示為預存程序
Set cmdTemp.ActiveConnection = Dataconn
Set tmpParam = cmdTemp.CreateParameter("Return Value", 3, 4, 4)
cmdTemp.Parameters.Append tmpParam
Set tmpParam = cmdTemp.CreateParameter("@BeginDate", 135, 1, 16, riqi)
'建立輸入參數對象
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3 '產生查詢結果
%>
這裡呼叫的預存程序為pd_test,這種是ADO中提供的標準方法,但存在一個問題,就是當在預存程序中有兩個以上的SELECT語句,但從邏輯上又不可能同時執行的時候,ADO會提示你預存過程中SELECT語句太多,解決方法是直接用ADO的CONNECTION物件的EXECUTE方法直接執行預存程序,如下:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連線對象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
ss = "EXECUTE dbo.pd_test " & "'" & riqi1 & "'"
Set rs = dataconn.Execute(ss)
%>
有關ASP和ADO使用的詳細信息,請參閱Microsoft ActiveX Data Objects (ADO) 和Active Server Pages(ASP)的詳細參考。
五、結束語
在B/S結構的開發中,我們可以把一些商業規則或複雜查詢用預存程序在DBMS中編寫,然後用ASP中的ADO物件調用,完成原來C/S結構中的傳統功能。