首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

C# 連接 MySQL 三種主流方式對比:MySQLDriverCS、MySql.Data、ODBC

     編輯:MySQL 綜合教學

C# 連接 MySQL 三種主流方式對比:MySQLDriverCS、MySql.Data、ODBC

.NET 應用連接 MySQL 主要有三種驅動方式,各有優缺點。本文提供完整程式碼範例與選型建議。

方式一:MySQLDriverCS(較舊、輕量)

套件來源:SourceForge `MySQLDriverCS.dll`

using MySQLDriverCS;

// 連接字串建構
MySQLConnectionString connStr = new MySQLConnectionString(
    "10.99.19.121",   // Host
    "haha",           // Database
    "root",           // User
    "root",           // Password
    3306              // Port
);

using (MySQLConnection conn = new MySQLConnection(connStr.AsString))
{
    try
    {
        conn.Open();
        MessageBox.Show("資料庫已連線!");
        
        string sql = "SELECT * FROM tb_user";
        MySQLDataAdapter adapter = new MySQLDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "table1");
        dataGridView1.DataSource = ds.Tables["table1"];
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

方式二:MySql.Data(官方推薦、功能完整)

套件來源:NuGet `MySql.Data` 或官網下載 `mysql.data.dll`

註冊 DLL(若手動複製):

# 64位系統
copy mysql.data.dll C:\Windows\SysWOW64\
regsvr32 mysql.data.dll
using MySql.Data.MySqlClient;

string connStr = "server=10.99.19.121;user id=root;password=root;database=haha;charset=utf8;";

using (MySqlConnection conn = new MySqlConnection(connStr))
{
    try
    {
        conn.Open();
        MessageBox.Show("資料庫已連線!");
        
        string sql = "SELECT * FROM tb_user";
        MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "table1");
        dataGridView1.DataSource = ds.Tables["table1"];
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

方式三:ODBC(通用標準、需驅動)

前置作業:安裝 MySQL ODBC Driver (32/64 位對應應用)、設定系統 DSN

using System.Data.Odbc;

string dsn = "DSN=MySQL_DSN;UID=root;PWD=root;";

using (OdbcConnection conn = new OdbcConnection(dsn))
{
    try
    {
        conn.Open();
        // 後續操作同 ADO.NET 模式
    }
    catch (Exception ex) { /* ... */ }
}

三種方式對比表

維度MySQLDriverCSMySql.Data (官方)ODBC
維護狀態停止更新(舊專案)持續更新(官方)標準介面
功能完整度基礎完整(支援所有新特性)基礎
效能尚可最佳(原生協定)有額外層開銷
部署複雜度單一 DLLNuGet 管理/單一 DLL需安裝驅動+設定 DSN
跨資料庫遷移困難困難容易(標準介面)
推薦場景舊專案維護新專案首選異構資料庫整合

最佳實務建議

  1. 新專案直接用 MySql.Data:`Install-Package MySql.Data`,官方維護、支援最新 MySQL 8.0+ 特性(JSON、CTE、窗口函數等)。
  2. 連接字串加密:生產環境勿硬編碼密碼,使用 `appsettings.json` + `Configuration` + 加密儲存。
  3. 連線池管理:`Pooling=true;Min Pool Size=5;Max Pool Size=100;` 避免頻繁建立/銷毀連線。
  4. 使用 `using` 區塊:確保連線、命令、讀取器正確 Dispose。
  5. 參數化查詢:防止 SQL Injection,`cmd.Parameters.AddWithValue("@id", id);`

常見問題排查

錯誤原因解決
Unable to connect to any of the specified MySQL hostsIP/Port/防火牆/bind-address檢查 3306 通達性、my.cnf bind-address=0.0.0.0
Authentication plugin 'caching_sha2_password' not supportedMySQL 8.0 新認證插件升級 MySql.Data 8.0+ 或建立用戶指定 `mysql_native_password`
Character set 'utf8mb4' not supported驅動版本過舊升級驅動至 6.10+ / 8.0+
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved