在 .NET 應用程式開發中,MySQL 作為開源關聯式資料庫的首選,其連接方式主要分為三大類:官方原生驅動、ODBC 標準介面、以及第三方商業元件。本文將深入解析這三種方案的特點、適用場景,並提供可直接編譯執行的完整 C# 程式碼範例。
這是 MySQL 官方提供的純 .NET 資料提供者,無需額外安裝 ODBC 驅動,效能最佳、部署最簡單。安裝後只需引用 MySql.Data.dll 並使用 MySql.Data.MySqlClient 命名空間即可。
連接字串範例:
Server=localhost;Database=test;Uid=root;Pwd=qing;
編譯指令: csc /r:MySql.Data.dll test.cs
適用於跨平台、跨語言的通用資料存取場景。需安裝兩個元件:ODBC.NET 資料提供者與 MySQL ODBC Driver(3.51 版或更新)。連接字串需指定驅動名稱:
DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;UID=root;PASSWORD=qing;OPTION=3
第三方廠商 CoreLab 推出的 .NET 資料提供者,功能豐富、效能優異,適合企業級專案。引用命名空間 CoreLab.MySql,編譯時需參考 CoreLab.MySql.dll。
下列程式碼在單一類別中完整實作了三種連接方式的查詢操作,包含連線開啟、命令執行、資料讀取與資源釋放的標準流程:
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();
}
}
將上述程式碼儲存為 test.cs,使用下列指令編譯(需同時參考兩個 DLL):
csc /r:CoreLab.MySql.dll /r:MySql.Data.dll test.cs
執行 test.exe 即可看到三種連接方式依序查詢資料庫的結果輸出。
掌握這三大方案,即可靈活應對各類 .NET 與 MySQL 整合場景,確保資料存取層的穩健與高效。
