首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 連接 MySQL 三大方案實戰:Connector/Net、ODBC、CoreLab 全解析

     編輯:關於.NET

方案對照表

方案核心組件命名空間適用場景
1. 官方驅動MySQL Connector/NetMySql.Data.MySqlClient原生 ADO.NET、效能最佳、維護最活躍
2. ODBC 橋接ODBC.NET + MyODBC 3.51System.Data.Odbc異質資料庫整合、舊系統遷移
3. 第三方商用CoreLab.MySqlCoreLab.MySql需進階功能(如連線池優化)時考慮

方案一:MySQL Connector/Net(推薦)

安裝與參考

  • 下載:MySQL Connector/Net 6.0.2
  • 安裝後於專案加入 MySql.Data.dll 參考
  • 引用命名空間:using MySql.Data.MySqlClient;

連線字串範例

Database=test;Data Source=localhost;User Id=root;Password=qing

命令列編譯

csc /r:MySql.Data.dll test.cs

方案二:ODBC 連接

前置需求

  1. 安裝 ODBC.NET Provider (Microsoft Data Access Components)
  2. 安裝 MySQL Connector/ODBC (MyODBC) 3.51
  3. 於「控制台 → 系統管理工具 → 資料來源 (ODBC)」設定系統 DSN 或使用無 DSN 連線字串

無 DSN 連線字串

DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;UID=root;PASSWORD=qing;OPTION=3

命名空間

using System.Data.Odbc;

方案三:CoreLab MySqlDirect

特點

  • 商用元件,功能豐富(支援壓縮、SSL、進階連線池)
  • 需購買授權,適合企業級專案

連線字串

User Id=root;Host=localhost;Database=qing;password=qing

編譯指令

csc /r:CoreLab.MySql.dll test.cs

完整程式碼範例:三種方式同步展示

using System;
using System.Data.Odbc;
using MySql.Data.MySqlClient;
using CoreLab.MySql;

class ConnectMySql
{
    // 方案一:Connector/Net
    public void Connect_Net()
    {
        string connStr = "Database=test;Data Source=localhost;User Id=root;Password=qing";
        using (var cn = new MySqlConnection(connStr))
        using (var cmd = new MySqlCommand("SELECT * FROM hello", cn))
        {
            cn.Open();
            using (var dr = cmd.ExecuteReader())
                while (dr.Read()) Console.WriteLine(dr.GetString(0));
        }
    }

    // 方案二:ODBC
    public void Connect_Odbc()
    {
        string connStr = "DRIVER={MySQL ODBC 3.51 Driver};" +
                         "SERVER=localhost;DATABASE=test;UID=root;PASSWORD=qing;OPTION=3";
        using (var cn = new OdbcConnection(connStr))
        using (var cmd = new OdbcCommand("SELECT * FROM hello", cn))
        {
            cn.Open();
            using (var dr = cmd.ExecuteReader())
                while (dr.Read()) Console.WriteLine(dr.GetString(0));
        }
    }

    // 方案三:CoreLab
    public void Connect_CoreLab()
    {
        string connStr = "User Id=root;Host=localhost;Database=qing;password=qing";
        using (var cn = new CoreLab.MySql.MySqlConnection(connStr))
        using (var cmd = new CoreLab.MySql.MySqlCommand("SELECT * FROM shop", cn))
        {
            cn.Open();
            using (var dr = cmd.ExecuteReader())
                while (dr.Read()) Console.WriteLine(dr.GetString(0));
        }
    }

    public static void Main()
    {
        var demo = new ConnectMySql();
        demo.Connect_Net();
        demo.Connect_Odbc();
        demo.Connect_CoreLab();
    }
}

最佳實踐建議

  1. 優先使用 Connector/Net:原生 ADO.NET 實作,效能最好、相容性最高、社群支援最完善。
  2. 連線字串外部化:存於 app.config 或 appsettings.json,避免硬編碼。
  3. 善用 using 區塊:確保連線、命令、讀取器正確釋放,防止連線洩漏。
  4. 參數化查詢:防止 SQL Injection,範例中為簡化省略,實務必加參數。
  5. 連線池:Connector/Net 內建連線池,連線字串相同即可複用,無需額外設定。

常見問題排查

錯誤現象可能原因解決方向
Unable to connect to any of the specified MySQL hosts防火牆阻擋 3306、MySQL bind-address 設定、帳號權限檢查防火牆、my.cnf、GRANT 權限
Authentication method unknownConnector/Net 版本過舊不支援新版 MySQL 認證插件升級 Connector/Net 至 8.0+
ODBC 驅動程式找不到未安裝 MyODBC 或位元數不符 (x86/x64)安裝對應版本 MyODBC,確認 ODBC 管理員位元數

結語

掌握三種連接方式,可因應不同專案限制(授權、舊系統、效能需求)。現代 .NET 專案強烈建議標準化於 MySQL Connector/Net,搭配 MySql.Data 套件,獲得最佳開發體驗與長期維護保障。

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