MySQL 憑藉開源免費、效能優異、社群活躍,已成為 Google、NASA、美聯社等大型機構的核心資料庫選擇。在 .NET 生態系中,官方提供的 MySQL Connector/NET (原 ByteFX.Data) 讓 ASP.NET 應用程式能像存取 SQL Server 一樣自然地操作 MySQL,支援 ADO.NET 標準介面、連線池、交易、非同步查詢與 Entity Framework Core,是跨平台開發的最佳拍檔。
引用 MySql.Data.MySqlClient (Windows/.NET Framework) 或 ByteFX.Data.MySqlClient (Mono),主要類別對應:
| 類別 | 對應 SQL Server | 用途 |
|---|---|---|
MySqlConnection | SqlConnection | 管理連線、連線池、開啟/關閉 |
MySqlCommand | SqlCommand | 執行 SQL、預存程序、參數化查詢 |
MySqlDataReader | SqlDataReader | 高效唯讀順向資料流 |
MySqlDataAdapter | SqlDataAdapter | 填充 DataSet、批次更新 |
MySqlException | SqlException | 錯誤代碼與訊息處理 |
string connStr = "Server=localhost;Database=sitepoint;Uid=dev;Pwd=secret;Pooling=true;Min Pool Size=5;Max Pool Size=100;";
using (MySqlConnection conn = new MySqlConnection(connStr)) {
conn.Open(); // 從連線池取得或建立實體連線
// 執行命令...
}
關鍵參數:Pooling=true (預設開啟)、SslMode=Preferred (生產環境建議)、CharSet=utf8mb4 (支援 Emoji)。
<%@ Page Language="C#" %>
<%@ Import Namespace="MySql.Data.MySqlClient" %>
<script runat="server">
void Page_Load(Object src, EventArgs e) {
string connStr = "Server=localhost;Database=mysql;Uid=root;Pwd=;"; // 僅示範
using (MySqlConnection conn = new MySqlConnection(connStr)) {
conn.Open();
MySqlCommand cmd = new MySqlCommand("SHOW DATABASES", conn);
MySqlDataReader dr = cmd.ExecuteReader();
rptDatabases.DataSource = dr;
rptDatabases.DataBind();
dr.Close();
}
}
</script>
<asp:Repeater ID="rptDatabases" runat="server">
<ItemTemplate><%# Container.DataItem %><br /></ItemTemplate>
</asp:Repeater>
MySqlCommand.ExecuteReader() 回傳 MySqlDataReader,GetString(0) 取得第一欄 (資料庫名)。
using ByteFX.Data.MySqlClient; (舊版 Mono) 或同樣使用 MySql.Data.MySqlClient (新版 Mono 已整合官方驅動)。Server 可用 IP 或 Unix Socket 路徑 (Socket=/var/run/mysqld/mysqld.sock)。MySql.Data.dll 隨應用程式複製至 bin 目錄 (或 GAC 註冊)。cmd.Parameters.AddWithValue("@id", id) 防止 SQL Injection。Min/Max Pool Size,避免連線耗盡。await cmd.ExecuteReaderAsync() 提升 Web 應用吞吐量。MySqlException,依 Number 屬性 (如 1062 Duplicate Key) 給予使用者友善提示。mysqldump --single-transaction --routines --triggers 定期異地備份。MySQL + ASP.NET (Core/Framework) + MySQL Connector/NET 構成成熟、高效、跨平台的資料驅動開發棧。善用 ADO.NET 標準介面與驅動進階功能,可大幅降低資料存取層複雜度,專注於業務邏輯創新。