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

ASP 連接 SQL Server 資料庫三種實用方法完整範例

     編輯:關於SqlServer

傳統 ASP (Active Server Pages) 透過 ADO 連接 SQL Server,常用三種連接字串模式:ODBC DSN、OLE DB Provider、ODBC Driver。本文提供完整可複製部署的範本,含登入驗證實作與連接物件管理最佳實務。

方法一:ODBC 系統 DSN(需預先在控制台建立)

建立 DSN 步驟

  1. 控制台 → 系統管理工具 → 資料來源 (ODBC) → 系統 DSN → 新增。
  2. 選 SQL Server → 下一步 → 輸入 DSN 名稱(如 MySQLDSN)、描述、伺服器名稱/IP。
  3. 驗證方式:Windows 整合 或 SQL Server 驗證(輸入 sa/密碼)。
  4. 預設資料庫選目標 DB → 完成 → 測試資料來源成功。

ASP 連接碼

<%
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=MySQLDSN;UID=sa;PWD=your_password;"  ' DSN 已含資料庫,UID/PWD 可選
%>

方法二:OLE DB Provider (SQLOLEDB) — 推薦,無需 DSN、效能最佳

<%
Dim conn, connStr
connStr = "Provider=SQLOLEDB.1;Data Source=YourServerIP;Initial Catalog=YourDB;User ID=sa;Password=your_password;"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr
%>
  • Data Source:伺服器名稱、IP、或 localhost/(local)。
  • Initial Catalog:資料庫名稱。
  • 若用 Windows 整合驗證:Integrated Security=SSPI; 移除 UID/PWD。

方法三:ODBC Driver 字串(無 DSN,相容性好)

<%
Dim conn, connStr
connStr = "Driver={SQL Server};Server=YourServerIP;Database=YourDB;UID=sa;PWD=your_password;"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr
%>

實戰範例:登入驗證頁面 (login.asp + login_check.asp)

共用連接檔 — conn.asp

<%
' 建議放在 Application_OnStart 或快取中,避免重複建立
Dim connStr
connStr = "Provider=SQLOLEDB.1;Data Source=192.168.1.50;Initial Catalog=MyForum;User ID=web_user;Password=Str0ngP@ss;"
%>

登入表單 — login.asp

<form action="login_check.asp" method="post">
  帳號: <input name="username" type="text" required><br>
  密碼: <input name="pwd" type="password" required><br>
  <input type="submit" value="登入">
</form>

驗證邏輯 — login_check.asp

<%
Dim conn, rs, sql, username, pwd
username = Trim(Request.Form("username"))
pwd      = Trim(Request.Form("pwd"))

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open Application("connStr")  ' 假設全域變數或 include conn.asp

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT UserID, PasswordHash, Salt FROM Users WHERE Username = ?"
' 參數化查詢防 SQL Injection
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = 1 ' adCmdText
cmd.Parameters.Append cmd.CreateParameter("@username", 200, 1, 50, username) ' adVarChar, adParamInput
Set rs = cmd.Execute

If rs.EOF Then
    Response.Write "帳號不存在,請先註冊。"
Else
    ' 這裡應使用 bcrypt/Argon2 驗證,示範用簡單比對
    If rs("PasswordHash") = HashPassword(pwd, rs("Salt")) Then
        Session("UserID") = rs("UserID")
        Session("Username") = username
        Response.Redirect "index.asp"
    Else
        Response.Write "密碼錯誤。"
    End If
End If

rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing

Function HashPassword(pwd, salt)
    ' 實際請用 Server.CreateObject("System.Security.Cryptography.BCrypt") 或第三方元件
    HashPassword = pwd ' 僅示範
End Function
%>

連接物件管理最佳實務

原則做法
盡早開啟、盡早關閉在需要查詢前開啟,讀完資料立即 Close、Set ... = Nothing
連接共用相同連接字串自動共用連接池;避免每頁建立不同字串
錯誤處理On Error Resume Next 搭配 Err.Number 判斷,記錄日誌、友善提示
參數化查詢永遠使用 Command + Parameters,絕不拼接字串
最小權限網站用帳號僅授 db_datareader/db_datawriter 或預存程序執行權

常見問題排查

  • 無法連線:檢查防火牆 1433、SQL Server 組態管理員啟用 TCP/IP、允許遠端連線。
  • 登入失敗:確認 SQL Server 驗證模式為混合模式、帳號未鎖定、密碼正確。
  • 中文亂碼:連接字串加 ;Codepage=65001 或確保資料庫/欄位排序規則支援 Unicode (NVARCHAR)。

雖然 ASP 屬經典技術,但許多舊系統仍在運作。掌握正確連接模式與安全寫法,能延長系統壽命並降低風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved