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

.NET 環境下三種 MySQL 連線方案完整實作指南

     編輯:MySQL 綜合教學

概述:.NET 存取 MySQL 的主流路徑

在 .NET 應用程式中連接 MySQL,主要有三種成熟方案,各具適用場景。本文提供完整程式碼範例與編譯指令,供開發者快速選型落地。

方案一:官方 MySQL Connector/Net(ADO.NET 原生驅動)

特點

  • MySQL 官方維護,相容性最佳
  • 純 managed code,部署簡單(單一 DLL)
  • 支援最新 MySQL 特性與 .NET Core

關鍵設定

引用命名空間:MySql.Data.MySqlClient
編譯指令:csc /r:MySql.Data.dll test.cs

方案二:ODBC 橋接模式

前置需求

  1. 安裝 ODBC.NET Provider (`odbc.net`)
  2. 安裝 MySQL ODBC Driver (MyODBC 3.51+)

連線字串模式

DSN 模式:`DSN=MySQL;UID=root;PWD=qing`

DSN-less 模式(推薦,免設定 DSN):

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

方案三:CoreLab MySQL Direct(第三方商業元件)

特點

  • 效能優化佳,功能豐富
  • 需購買授權,適合企業級專案

關鍵設定

引用命名空間:CoreLab.MySql
編譯指令:csc /r:CoreLab.MySql.dll test.cs

完整程式碼範例:三種連線方式對照實作

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

class ConnectMySql
{
    // 方案三:CoreLab
    public void Connect_CoreLab()
    {
        string constr = "User Id=root;Host=localhost;Database=qing;password=qing";
        using (MySqlConnection mycn = new MySqlConnection(constr))
        {
            mycn.Open();
            using (MySqlCommand mycm = new MySqlCommand("select * from shop", mycn))
            using (MySqlDataReader msdr = mycm.ExecuteReader())
            {
                while (msdr.Read())
                    if (msdr.HasRows) Console.WriteLine(msdr.GetString(0));
            }
        }
    }

    // 方案二:ODBC
    public void Connect_Odbc()
    {
        string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
            "SERVER=localhost;DATABASE=test;UID=root;PASSWORD=qing;OPTION=3";
        using (OdbcConnection MyConn = new OdbcConnection(MyConString))
        {
            MyConn.Open();
            using (OdbcCommand mycm = new OdbcCommand("select * from hello", MyConn))
            using (OdbcDataReader msdr = mycm.ExecuteReader())
            {
                while (msdr.Read())
                    if (msdr.HasRows) Console.WriteLine(msdr.GetString(0));
            }
        }
    }

    // 方案一:Connector/Net
    public void Connect_Net()
    {
        string myConnectionString = "Database=test;Data Source=localhost;User Id=root;Password=qing";
        using (MySqlConnection mycn = new MySqlConnection(myConnectionString))
        {
            mycn.Open();
            using (MySqlCommand mycm = new MySqlCommand("select * from hello", mycn))
            using (MySqlDataReader msdr = mycm.ExecuteReader())
            {
                while (msdr.Read())
                    if (msdr.HasRows) Console.WriteLine(msdr.GetString(0));
            }
        }
    }

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

編譯與執行

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

選型建議

維度Connector/NetODBCCoreLab
效能高中(經過 ODBC 層)最高
部署複雜度低(單檔)高(需配置驅動)中
授權成本免費免費商業授權
功能完整度全受 ODBC 限制全+增強
推薦場景現代 .NET 專案首選異構資料庫整合高效能企業級系統

最佳實務提醒

  • 一律使用 `using` 區塊確保連線正確釋放
  • 生產環境連線字串應存於設定檔並加密
  • 參數化查詢防止 SQL Injection
  • 連線池機制預設開啟,勿頻繁開關連線
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved