首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

VC / Delphi / VB 連接 MySQL 兩大方案:C API 與 MyODBC 實戰

     編輯:MySQL 資料庫相關知識

桌面應用(VC++、Delphi、VB、BCB 等)接入 MySQL 主有兩條路徑:調用官方 C API 庫,或通過 MyODBC 驅動走 ODBC 標準介面。本文對比兩種方案的優劣、適用場景,並給出 MyODBC 手動部署的完整註冊表腳本。

一、方案對比

維度C API (libmysql.dll)MyODBC (ODBC 驅動)
開發難度高:需熟悉 mysql_init/real_connect/query/store_result/fetch_row 等 20+ API低:標準 ODBC API(SQLConnect/SQLExecDirect/SQLFetch),通用性強
語言綁定需各語言自行封裝或找現成 WrapperVB/Delphi/VC/VB.NET/C# 皆有原生 ODBC 支持
部署體積僅 libmysql.dll (~1MB)驅動 ~2MB + ODBC 管理器(系統自帶)
ASP/COM 支持❌ 無 COM 介面✅ 支持 ADO/ASP 經典應用
效能略高(直連協議)極微損耗(ODBC 層轉換),可忽略
維護性代碼耦合 MySQL,遷移成本高標準介面,遷移只需換 DSN/連接字符串

建議: 新項目優先 **MyODBC/ODBC**;極致效能或嵌入式場景才考慮 C API。

二、MyODBC 手動部署步驟(無需完整安裝包)

  1. 下載 myodbc.dll(官網「Without installer」壓縮包)
  2. 複製到系統目錄:
    • Windows 9x/Me: C:\Windows\System
    • Windows NT/2000/XP/2003/Vista/7/10/11: C:\Windows\System32
  3. 導入註冊表(保存為 myodbc.reg 雙擊導入):

Windows 2000/XP/2003/Vista/7/10/11 (Registry 5.0)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MyODBC 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]
"MyODBC Driver"="installed"

Windows 9x/Me (Registry 4.0)

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MyODBC Driver]
"UsageCount"=dword:00000002
"Driver"="C:\\Windows\\System\\myodbc.dll"
"Setup"="C:\\Windows\\System\\myodbc.dll"
... (其餘鍵值相同) ...
  1. 打開「ODBC 數據源管理器」(odbcad32.exe)→「系統 DSN」→「添加」→ 選擇「MyODBC Driver」→ 填寫:
  • Data Source Name: 自定義
  • Server: 127.0.0.1 或主機名
  • Port: 3306
  • User: root / 應用賬號
  • Password: ********
  • Database: 目標庫
  • 點擊「測試」成功後,代碼中使用 DSN 連接:
  • Delphi (ADO) 連接字符串範例

    ADOConnection1.ConnectionString :=
      'Provider=MSDASQL.1;Persist Security Info=False;Data Source=MyMySQLDSN;Initial Catalog=testdb;';
    ADOConnection1.Open;

    VC++ (MFC ODBC) 片段

    CDatabase db;
    db.OpenEx(_T("DSN=MyMySQLDSN;UID=root;PWD=pass;"), CDatabase::noOdbcDialog);
    CRecordset rs(&db);
    rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM users"));

    三、常見坑點

    • 32/64 位不匹配: 64 位系統運行 32 位應用需用 C:\Windows\SysWOW64\odbcad32.exe 配置 32 位 DSN,並放置 32 位 myodbc.dll。
    • 字符集亂碼: 連接字符串加 CHARSET=utf8mb4 或執行 SET NAMES utf8mb4。
    • 驅動版本: MySQL 8.0+ 需 MyODBC 8.0.x;5.7/5.6 用 5.3.x。
    • 防火牆/權限: 確認 3306 端口通、用戶 host='%' 或具體 IP 授權。

    掌握 ODBC 部署細節,能讓桌面應用快速、穩定、可遷移地接入 MySQL,避免重造輪子。

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