MySQL 資料庫以輕量、高效著稱,雖早期版本不支援交易與預存程序,但在中小型專案中表現優異,甚至在特定情境下速度超越大型資料庫。若要在 .NET 環境下存取 MySQL,許多開發者第一反應是使用 OLEDB,但實測發現 System.Data.OleDb 無法直接連接 MySQL,會拋出「不支援 MSDASQL 提供程式」錯誤。所幸我們有更好的替代方案:ODBC.NET。
ODBC.NET 是微軟免費提供的 .NET Framework 附加元件,需從微軟官網下載,系統需預先安裝 MDAC 2.7 或更新版本。此外,必須安裝 MySQL ODBC 驅動程式(下載位址:MySQL 官網),並在「ODBC 資料來源管理員」中設定 DSN(資料來源名稱)。

ODBC.NET 的物件模型與 OLEDB、SQL Client 高度一致,主要類別包括:
OdbcConnection - 連線物件OdbcCommand - 命令執行OdbcDataAdapter - 資料配接器OdbcDataReader - 唯讀、順向資料流若專案原本使用 OleDb,幾乎可透過「尋找取代」快速完成遷移。
try {
string constr = "DSN=MySQL;UID=root;PWD=;";
using (OdbcConnection conn = new OdbcConnection(constr)) {
conn.Open();
// 批次插入 10 萬筆測試資料
string query = "INSERT INTO test.dbtable VALUES (10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
using (OdbcCommand cmd = new OdbcCommand(query, conn)) {
for (int i = 0; i < 100000; i++) {
cmd.ExecuteNonQuery();
}
}
// 查詢驗證
query = "SELECT * FROM test.dbtable";
using (OdbcCommand cmd2 = new OdbcCommand(query, conn)) {
using (OdbcDataReader reader = cmd2.ExecuteReader()) {
while (reader.Read()) {
// 處理資料...
}
}
}
// 清理測試資料
query = "DELETE FROM test.dbtable";
using (OdbcCommand cmd3 = new OdbcCommand(query, conn)) {
cmd3.ExecuteNonQuery();
}
}
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
using 區塊自動釋放非受控資源掌握 ODBC.NET 操作 MySQL 的要領,即可在 .NET 專案中穩定、高效地整合 MySQL 資料庫。