在 .NET 應用程式中連接 MySQL,主要有三種成熟方案,各具適用場景。本文提供完整程式碼範例與編譯指令,供開發者快速選型落地。
引用命名空間:MySql.Data.MySqlClient 編譯指令:csc /r:MySql.Data.dll test.cs
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 編譯指令: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/Net | ODBC | CoreLab |
|---|---|---|---|
| 效能 | 高 | 中(經過 ODBC 層) | 最高 |
| 部署複雜度 | 低(單檔) | 高(需配置驅動) | 中 |
| 授權成本 | 免費 | 免費 | 商業授權 |
| 功能完整度 | 全 | 受 ODBC 限制 | 全+增強 |
| 推薦場景 | 現代 .NET 專案首選 | 異構資料庫整合 | 高效能企業級系統 |