﻿# .NET 如何連接舊版的 MySQL 4.0 並透過 ADO.NET 操作資料

幾個月前曾經做一個系統整合的案子，要整合客戶內部的系統並提供新服務，進一步瞭解後才發現他們用的資料庫竟然是多年前的 MySQL 4.0 版，這個版本在官方早就不支援了，而且也無法下載的到任何檔案，所以我光是要設立開發環境都還有點困難，還好我有在[義守大學的檔案伺服器](https://web.archive.org/web/20200518162752/http://ftp.isu.edu.tw:80/)找到舊版的 MySQL 伺服器。

但重點是我的 .NET 應用程式必須要能連接他們的資料庫才能完成新服務的開發，因此也找了幾套可以連接 MySQL 的類別庫套件，我首先先嘗試使用官方的 MySQL Connector/Net 的各版本來測試，不過因為 MySQL 4.0 是不支援 Unicode 特性的，而 .NET 卻是一個完全以 Unicode 為基礎的開發環境，測試的過程中遇到許多問題，最後終於放棄。

我另外找到一套開放原始碼的 [MySQL Drivers for .NET](https://sourceforge.net/projects/mysqldrivercs) 可以有效的處理中文問題，他會將從 MySQL 4.0 資料庫中的資料適當的轉成 .NET 可以讀取的字串資料，進而讓我們開發的系統能夠正常運作，算是一個蠻不錯的解決方案。只是，不使用 Unicode 而衍生的老問題在這裡一樣還是會發生，也就是「許功蓋」的問題，不過這也是難以避免的，所以也是必須勉強接受。

以下是我使用 [MySQLDriverCS](http://sourceforge.net/projects/mysqldrivercs) 所寫出來的程式碼範例：

```
string host = System.Web.Configuration.WebConfigurationManager.AppSettings["MySQL_Host"];
string user = System.Web.Configuration.WebConfigurationManager.AppSettings["MySQL_User"];
string pass = System.Web.Configuration.WebConfigurationManager.AppSettings["MySQL_Pass"];
string dbname = System.Web.Configuration.WebConfigurationManager.AppSettings["MySQL_DBName"];

using (MySQLConnection conn = new MySQLConnection(
                new MySQLConnectionString(host, dbname, user, pass).AsString))
{
    string strSQL = "SELECT * FROM products WHERE id=@ID LIMIT 1";

    // 準備 MySQLCommand
    MySQLCommand cmd = new MySQLCommand(strSQL, conn);

    // 產品編號
    MySQLParameter p1 = new MySQLParameter("@ID", DbType.String);
    p1.Size = 12;
    p1.Value = "ESC0023";
    cmd.Parameters.Add(p1);

    // MySQLDataAdapter ( 使用 MySQLDataAdapter 會自動開啟資料庫連線 )
    MySQLDataAdapter ta = new MySQLDataAdapter(cmd);
    ta.Fill(dt);

    cmd.Dispose();
    conn.Close();
}
```

我並沒有測試過使用 [MySQLDriverCS](http://sourceforge.net/projects/mysqldrivercs) 連接 MySQL 4.1/5.0 資料庫，如果有人有時間測試的話，可以留言給我，謝謝。

**相關連結**

-   [MySQLDriverCS](http://sourceforge.net/projects/mysqldrivercs)
-   [MySQL Downloads](http://dev.mysql.com/downloads/)
-   下載舊版的 MySQL 4.0 伺服器 (義守大學FTP伺服器)
