| 方案 | 原理 | 優點 | 缺點 | 適用 |
|---|---|---|---|---|
| MySQL C API (libmysql.dll) | 直接呼叫原生函數 | 效能最高、功能完整 | 開發難度高、非 COM | C/C++、BCB、Delphi (高階) |
| MyODBC (ODBC 驅動) | 標準 ODBC 介面 | 通用性強、支援 VB/ASP/Delphi/VC | 效能略低、需配置 DSN | VB、ASP、Delphi、VC (快速開發) |
myodbc.dll (約數百 KB),複製至:
C:\Windows\System\C:\WINNT\System32\ 或 C:\Windows\System32\myodbc.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MyODBC Driver]
"UsageCount"=dword:00000002
"Driver"="C:\\WINNT\\System32\\myodbc.dll"
"Setup"="C:\\WINNT\\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]
"MyODBC Driver"="installed"
注意:路徑雙反斜線、Win2K/XP 用 Version 5.00,Win9x 用 4.00。
myodbc.reg 匯入註冊表。Data Source Name: MyMySQL
Description: MySQL Test
Server: localhost (或 IP)
User: root
Password: ****
Database: testdb
Port: 3306
' VB / ASP (ADO)
Dim conn, rs
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=MyMySQL;UID=root;PWD=pass;"
Set rs = conn.Execute("SELECT * FROM users")
' ... 使用 rs
rs.Close: conn.Close
uses ADODB, DB;
var
Conn: TADOConnection;
Query: TADOQuery;
begin
Conn := TADOConnection.Create(nil);
Conn.ConnectionString := 'DSN=MyMySQL;UID=root;PWD=pass;';
Conn.LoginPrompt := False;
Conn.Open;
Query := TADOQuery.Create(nil);
Query.Connection := Conn;
Query.SQL.Text := 'SELECT * FROM users';
Query.Open;
// 使用 Query
end;
Data source name not found:DSN 名稱拼寫錯誤、未建立系統 DSN (User DSN 僅當前用戶可見)。Driver not capable:MyODBC 版本與 MySQL 服務器版本不匹配 (建議驅動版本 ≥ 服務器版本)。CHARSET=gbk 或 utf8;MyODBC 3.51+ 支援 Option=3 (設定字元集)。新專案建議改用 MySQL Connector/ODBC 8.0+ (官方支援 Unicode、TLS 1.2、Authentication Plugin),或語言原生驅動 (MySql.Data for .NET, mysql-connector-python, go-sql-driver/mysql 等)。