在非 Web 環境(桌面應用、服務程式)或傳統 ASP 應用中連線 MySQL,最通用的方式是透過 ODBC 驅動程式。本文記錄 MyODBC 3.51/5.x 僅部署核心 myodbc.dll(避免下載完整安裝包)並以 .reg 檔手動註冊系統 DSN 的完整步驟,適用於 Windows 2000/XP/2003 等舊版環境維護場景。
myodbc.dll、myodbc3S.dll、myodbc3D.dll 等)myodbc.dll(約 300–500 KB),複製至系統目錄:
C:\Windows\SystemC:\WinNT\System32 或 C:\Windows\System32myodbc.reg)使用純文字編輯器建立,儲存為 .reg,雙擊匯入:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 3.51 Driver]
"UsageCount"=dword:00000002
"Driver"="C:\\Windows\\System32\\myodbc.dll"
"Setup"="C:\\Windows\\System32\\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"
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"
關鍵值說明:
Driver/Setup:指向實際 myodbc.dll 完整路徑(雙反斜線轉義)ConnectFunctions="YYY":支援 SQLConnect/SQLDriverConnect/SQLBrowseConnectCpTimeout:連線池逾時秒數匯入上述 .reg 後,於 控制台 → 系統管理工具 → 資料來源 (ODBC) → 系統 DSN → 新增 → 選擇 MySQL ODBC 3.51 Driver,填寫:
MyAppDB)127.0.0.1 或主機名3306utf8 或 gbk測試連線成功即可在程式中使用 DSN=MyAppDB 連線。
Driver={MySQL ODBC 3.51 Driver};Server=127.0.0.1;Port=3306;Database=mydb;User=root;Password=pwd;Option=3;Charset=utf8;
ADO 範例:
ADOConnection1.ConnectionString =
"Provider=MSDASQL.1;"
"Driver={MySQL ODBC 3.51 Driver};"
"Server=127.0.0.1;Port=3306;"
"Database=mydb;User=root;Password=pwd;"
"Option=3;Charset=utf8;";
ADOConnection1.Connected = true;
| 現象 | 可能原因 | 解決 |
|---|---|---|
| 「找不到驅動程式」 | DLL 路徑錯誤或未註冊 | 確認 Driver 值為實際絕對路徑,重新匯入 .reg |
| 「架構不匹配」 | 32 位元應用載入 64 位元驅動(或相反) | 下載對應位元數的 MyODBC;SysWOW64 vs System32 注意重導向 |
| 中文亂碼 | 字元集未指定 | 連線字串加 Charset=utf8;資料庫/表/欄位同步設定 utf8_general_ci |
| 連線逾時 | 防火牆/埠阻擋、MySQL bind-address 限制 | 開放 3306、修改 my.cnf bind-address=0.0.0.0 |