首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

經典 ASP 透過 ADO 呼叫 SQL Server 檢視表與預存程序實作範例

     編輯:關於SqlServer

ASP 與 ADO 架構

ASP (Active Server Pages) 為伺服器端腳本環境,透過 ADO (ActiveX Data Objects) 連接後端資料庫。ADO 核心物件:Connection、Command、Recordset、Parameters 等。

建立 ODBC DSN

控制台「系統管理工具」→「資料來源 (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 自動解析檢視表定義。

呼叫預存程序 (標準 Command 方式)

<%
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 時的替代方案:Connection.Execute

若預存程序包含多個邏輯互斥的 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)
%>

總結

  • 檢視表與資料表對 ADO 而言操作一致。
  • 單一結果集預存程序建議使用 Command 物件,參數化、型別安全。
  • 多重結果集或動態 SQL 場景改用 Connection.Execute 繞過限制。
  • B/S 架構下將商業邏輯封裝於預存程序,ASP 僅負責呈現,符合分層設計原則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved