MySQL 官方提供的 Connector/NET 是 .NET 應用連接 MySQL 的標準驅動,支援 ADO.NET 標準介面,使用體驗與 System.Data.SqlClient 高度一致。本文以 ASP.NET 1.1 為例,示範從下載安裝到程式碼實作的完整流程。
MySql.Data.dll 註冊至 GAC,並安裝範例專案在 Visual Studio 專案中:
「參考」→「加入參考」→「.NET」頁籤 → 勾選 MySql.Data(或直接瀏覽安裝目錄下的 MySql.Data.dll)。
using MySql.Data.MySqlClient; // 關鍵命名空間
using System.Data;
public void BindData()
{
// 1. 連接字串(根據實際環境修改)
string connStr = "server=localhost;user id=root;password=XXXX;database=baby;pooling=true;charset=utf8;";
// 2. 建立連接與命令
using (MySqlConnection conn = new MySqlConnection(connStr))
using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM admin", conn))
{
// 3. 資料配接器填充 DataSet
using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds, "admin");
// 4. 綁定至 DataGrid(或 GridView/Repeater)
myDataGrid.DataSource = ds.Tables["admin"];
myDataGrid.DataBind();
}
} // using 區塊結束自動 Dispose,確保連接釋放
}
pooling=true(預設開啟),高併發下大幅降低建連開銷。?param 而非 @param:
cmd.CommandText = "SELECT * FROM users WHERE id = ?id AND name = ?name";
cmd.Parameters.AddWithValue("?id", 123);
cmd.Parameters.AddWithValue("?name", "abc");
charset=utf8(或 utf8mb4),避免中文亂碼。MySqlException,依 Number 屬性判斷錯誤類型(1062 重複鍵、2006 連線中斷等)。using 或 try/finally 確保 Connection、Command、Reader 正確關閉。| 現象 | 可能原因 | 解決方向 |
|---|---|---|
| Unable to connect to any of the specified MySQL hosts | 主機/埠/防火牆/skip-networking | 檢查 3306 通達性、bind-address 設定 |
| Authentication plugin 'caching_sha2_password' not supported | 驅動版本過舊不支援 MySQL 8.0 預設插件 | 升級 Connector/NET 或改用 mysql_native_password |
| Character set 'utf8mb4' not supported | 舊版驅動不識別 utf8mb4 | 連接字串用 charset=utf8 或升級驅動 |
Connector/NET 成熟穩定、API 直覺,是 .NET 連接 MySQL 的首選。掌握「參數用 ?、編碼設 charset、善用 using 釋放資源」三要訣,即可輕鬆構建健壯的資料存取層。