首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 與 ASP.NET 深度整合:使用 MySQL Connector/NET 建構高效資料存取層

     編輯:MySQL 資料庫相關知識

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用途
MySqlConnectionSqlConnection管理連線、連線池、開啟/關閉
MySqlCommandSqlCommand執行 SQL、預存程序、參數化查詢
MySqlDataReaderSqlDataReader高效唯讀順向資料流
MySqlDataAdapterSqlDataAdapter填充 DataSet、批次更新
MySqlExceptionSqlException錯誤代碼與訊息處理

建立連線:連線字串與 Open()

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)。

ASP.NET Web Forms 範例:顯示所有資料庫名稱

<%@ 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) 取得第一欄 (資料庫名)。

Mono 跨平台部署注意事項

  • 命名空間改為 using ByteFX.Data.MySqlClient; (舊版 Mono) 或同樣使用 MySql.Data.MySqlClient (新版 Mono 已整合官方驅動)。
  • Linux/macOS 下連線字串 Server 可用 IP 或 Unix Socket 路徑 (Socket=/var/run/mysqld/mysqld.sock)。
  • 部署時確保 MySql.Data.dll 隨應用程式複製至 bin 目錄 (或 GAC 註冊)。

效能與安全最佳實務

  1. 參數化查詢:cmd.Parameters.AddWithValue("@id", id) 防止 SQL Injection。
  2. 連線池調校:依並發量設定 Min/Max Pool Size,避免連線耗盡。
  3. 非同步查詢:.NET 4.5+ 使用 await cmd.ExecuteReaderAsync() 提升 Web 應用吞吐量。
  4. 例外處理:捕獲 MySqlException,依 Number 屬性 (如 1062 Duplicate Key) 給予使用者友善提示。
  5. 備份策略:搭配 mysqldump --single-transaction --routines --triggers 定期異地備份。

結語

MySQL + ASP.NET (Core/Framework) + MySQL Connector/NET 構成成熟、高效、跨平台的資料驅動開發棧。善用 ADO.NET 標準介面與驅動進階功能,可大幅降低資料存取層複雜度,專注於業務邏輯創新。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved