ASP (Active Server Pages) 為伺服器端腳本環境,透過 ADO (ActiveX Data Objects) 連接後端資料庫。ADO 核心物件:Connection、Command、Recordset、Parameters 等。
控制台「系統管理工具」→「資料來源 (ODBC)」→「系統 DSN」新增 SQL Server 驅動程式,設定伺服器、預設資料庫、驗證方式。
<%
Set Dataconn = Server.CreateObject("ADODB.Connection")
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;APP=Microsoft 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 ' adCmdTable (2) - 檢視表/資料表
Set cmdTemp.ActiveConnection = Dataconn
rst.Open cmdTemp, , 1, 3 ' adOpenKeyset, adLockOptimistic
' 處理 rst 資料...
%>
從檢視表查詢與基底資料表語法相同,ADO 自動解析檢視表定義。
<%
Set Dataconn = Server.CreateObject("ADODB.Connection")
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;APP=Microsoft 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 ' adCmdStoredProc (4)
Set cmdTemp.ActiveConnection = Dataconn
' 回傳值參數
Set tmpParam = cmdTemp.CreateParameter("Return Value", 3, 4, 4) ' adInteger, adParamReturnValue
cmdTemp.Parameters.Append tmpParam
' 輸入參數
Set tmpParam = cmdTemp.CreateParameter("@BeginDate", 135, 1, 16, riqi) ' adDBTimeStamp, adParamInput
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3
%>
若預存程序包含多個邏輯互斥的 SELECT 陳述式,Command 物件會報錯「SELECT 陳述式過多」。解決方法改用 Connection.Execute 直接執行動態 SQL:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection")
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;APP=Microsoft Developer Studio;WSID=APP_SERVER;Regional=Yes"
ss = "EXECUTE dbo.pd_test '" & riqi1 & "'"
Set rs = Dataconn.Execute(ss)
%>
Command 物件,參數化、型別安全。Connection.Execute 繞過限制。