非 Web 應用(VC、Delphi、VB 等)連接 MySQL,主流方案是 MyODBC ODBC 驅動。本文詳述 myodbc.dll 手動註冊、註冊表導入、DSN 配置全流程,解決無安裝包環境下的部署難題。
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| MySQL C API (libmysql.dll) | 性能高、功能全、無中間層 | 需熟悉 API、非 COM、難用於 ASP | C/C++ 高性能客戶端 |
| MyODBC (ODBC 標準) | 通用、支持 ADO/DAO、跨語言 | 性能稍低、需 DSN 配置 | Delphi/VB/ASP/報表工具 |
myodbc.dll(或 myodbc3.dll)# 32 位系統
C:\Windows\System32\myodbc.dll
# 64 位系統(32 位驅動)
C:\Windows\SysWOW64\myodbc.dll
# 64 位驅動
C:\Windows\System32\myodbc.dll
創建 myodbc.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 5.3 Driver]
"Driver"="C:\\Windows\\System32\\myodbc.dll"
"Setup"="C:\\Windows\\System32\\myodbc.dll"
"APILevel"="1"
"ConnectFunctions"="YYY"
"DriverODBCVer"="03.51"
"FileUsage"="0"
"SQLLevel"="1"
"UsageCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"MySQL ODBC 5.3 Driver"="Installed"
ODBC 數據源管理器 → 系統 DSN → 添加 → 選 "MySQL ODBC 5.3 Driver" → 配置:
| 字段 | 示例值 |
|---|---|
| Data Source Name | MyApp_MySQL |
| Description | MyApp Production DB |
| Server | 192.168.1.100 |
| Port | 3306 |
| User | app_user |
| Password | ******** |
| Database | myapp_db |
| Charset | utf8mb4 |
| Initial Statement | SET NAMES utf8mb4 |
uses ADODB, DB;
procedure TForm1.ConnectMySQL;
var
Conn: TADOConnection;
begin
Conn := TADOConnection.Create(Self);
Conn.ConnectionString :=
'Provider=MSDASQL.1;' +
'Persist Security Info=False;' +
'Data Source=MyApp_MySQL;' + // 系統 DSN 名
'Initial Catalog=myapp_db;';
Conn.LoginPrompt := False;
Conn.Connected := True;
// 現在可以使用 TADOQuery/TADOTable 操作
end;
| 現象 | 原因 | 解決 |
|---|---|---|
| 找不到驅動程序 | DLL 路徑錯/註冊表未導入/位數不匹配 | 檢查 DLL 位置、重新導入 .reg、確認 32/64 位一致 |
| 連接失敗 2003 | 主機/端口/防火牆/skip-networking | telnet 測試端口、檢查 bind-address |
| 中文亂碼 | 字符集未指定 | DSN Charset=utf8mb4 + Initial Statement=SET NAMES utf8mb4 |
| ASP 報錯 80004005 | MDAC 版本/權限/連接字符串 | 升級 MDAC 2.8+、檢查 IUSR 權限 |