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

ASP 連接 MySQL 實戰指南:ODBC 驅動配置與無 DSN 連線兩大方案

     編輯:MySQL 綜合教學

MySQL 憑藉輕量、高速、免費等優勢,成為眾多網站首選資料庫。雖然 PHP + MySQL 是黃金搭檔,但傳統 ASP 應用同樣能透過 ODBC 驅動順暢串接 MySQL。本文詳述在 Windows 環境下,ASP 使用 MySQL 的完整實作步驟,包含驅動安裝、系統 DSN 建立、無 DSN 連線字串、範例程式碼與常見坑點,助您快速落地。

一、環境與前置需求

  • 作業系統:Windows 98/2000/XP/Server 2003(示範環境為 Win98 + PWS 4.0)
  • MySQL 版本:mysql-3.23.32-win 或更新版
  • 關鍵驅動:MyODBC 2.50/3.51/5.x 系列(myodbc.dll),官網 MySQL Connector/ODBC 下載

二、方案一:建立系統 DSN(系統資料來源名稱)

1. 註冊 ODBC 驅動(若安裝程式未自動完成)

將 myodbc.dll 複製至 C:\Windows\System(Win2000/XP 為 C:\Winnt\System32),建立 myodbc.reg 檔,內容如下:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 3.51 Driver]
"UsageCount"=dword:00000002
"Driver"="C:\\Windows\\System\\myodbc.dll"
"Setup"="C:\\Windows\\System\\myodbc.dll"
"SQLLevel"="1"
"FileUsage"="0"
"DriverODBCVer"="02.50"
"ConnectFunctions"="YYY"
"APILevel"="1"
"CpTimeout"="120"

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"MySQL ODBC 3.51 Driver"="installed"

雙擊匯入登錄檔,控制台 → ODBC 資料來源 → 驅動程式頁籤,應可見 MySQL ODBC 3.51 Driver。

2. 新增系統 DSN

  1. 控制台 → ODBC 資料來源 → 系統 DSN → 新增
  2. 選擇 MySQL ODBC 3.51 Driver
  3. 填寫連線參數:
欄位說明範例值
Windows DSN NameDSN 名稱(ASP 連線字串引用)hc188
MySQL Host資料庫主機 IP 或主機名localhost 或 192.168.1.100
MySQL Database Name預設使用的資料庫hc188
User資料庫登入帳號root
Password登入密碼(可留空)123456
Port連接埠(預設 3306)3306

點擊「測試」確認連線成功後存檔。

3. ASP 連線範例程式碼

<%
Dim strConnection, adoDataConn, rs, strQuery
' 使用 DSN 連線
strConnection = "dsn=hc188;uid=root;pwd=123456;database=hc188"

Set adoDataConn = Server.CreateObject("ADODB.Connection")
adoDataConn.Open strConnection

strQuery = "SELECT username, password FROM user"
Set rs = adoDataConn.Execute(strQuery)

If Not rs.BOF Then
%>
<table border="1">
  <tr><th>username</th><th>password</th></tr>
  <%
  Do While Not rs.EOF
  %>
  <tr>
    <td><%=rs("username")%></td>
    <td><%=rs("password")%></td>
  </tr>
  <%
    rs.MoveNext
  Loop
  %>
</table>
<%
Else
  Response.Write "Sorry, no data found."
End If

rs.Close
adoDataConn.Close
Set rs = Nothing
Set adoDataConn = Nothing
%>

三、方案二:無 DSN 連線(DSN-less Connection)

優點:部署簡單、無需在伺服器建立 DSN、適合虛擬主機或無控制台權限環境。

將連線字串改為:

strConnection = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=hc188;Uid=root;Pwd=123456;Option=3;"

關鍵參數說明:

  • Driver:驅動名稱需與 ODBC 驅動程式頁籤顯示完全一致
  • Server:MySQL 主機 IP
  • Database:預設資料庫
  • Option:連線選項位元組合(3 = Found rows + Return matched rows)

其餘 ADO 程式碼不變。實測發現無 DSN 連線同樣需提供帳號密碼,若發現可無密碼連線,請檢查 MySQL user 表是否存在匿名帳號(user=''),應立即刪除:DELETE FROM mysql.user WHERE user=''; FLUSH PRIVILEGES;

四、常見問題與避坑指南

現象可能原因解決方案
「找不到資料來源名稱」DSN 名稱拼寫錯誤或未建立系統 DSN檢查拼寫、確認在「系統 DSN」而非「使用者 DSN」
「驅動程式不支援此功能」MyODBC 版本過舊或與作業系統位元數不符下載對應 32/64 位元最新版 MySQL Connector/ODBC
中文亂碼字元集不匹配連線字串加 Charset=utf8mb4;;資料表/欄位採用 utf8mb4_general_ci
連線逾時防火牆阻擋 3306、MySQL bind-address 限制開放防火牆、設定 bind-address=0.0.0.0 或具體 IP

五、現代化建議

若專案允許,強烈建議採用 ASP.NET (C#/VB.NET) + MySQL Connector/NET 或 ASP Classic + ADO + 参數化查詢 替代舊式字串拼接,防範 SQL 注入。若必須維護傳統 ASP,請務必:

  1. 使用 Command 物件搭配 Parameters 集合執行參數化 SQL
  2. 資料庫帳號遵循最小權限,僅授 SELECT/INSERT/UPDATE/DELETE 於業務表
  3. 啟用 MySQL 一般查詢日誌與慢查詢日誌,定期審計

掌握上述兩種連線模式,即可在舊版 ASP 專案中穩健接入 MySQL。隨著技術棧演進,規劃遷移至 .NET Core / Node.js / PHP 等現代框架將帶來更佳效能與安全性。

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