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

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

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

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

以下是我使用 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 連接 MySQL 4.1/5.0 資料庫,如果有人有時間測試的話,可以留言給我,謝謝。

相關連結

  

此文章由 will 發表於 2008/12/26 下午 02:05:00

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: .Net | C# | MySQL

標籤: , , ,

收藏:

相關文章

評論

十二月 27. 2008 05:17

vincentwin

官方的程式四處都有人收藏,不過...
http://mysql.ntu.edu.tw/Downloads/Connector-Net/
不要下載太新的版本,1.0.10或1.0.9
1.0.x就是for mySql 4.0*-
但bug多且停止支援,
而且她的 MySQL.VisualStudio tools也是一樣的毛病,
對mysql 4.0 支援度不高,程式都可以跑, 視覺化拖拉無法直接產生資料集來生成
有空的話可以一版一版測對mysql 4.0的支援度
以前測read file into讀大檔功能完全掛點,舉雙手投降

那時候可能是mysql 4.0已經快被放棄時,隨便做做敷衍一下
一樣是mysql4.0的driver,
java可是做到mysql-connector-java-3.0.17-ga.zip

vincentwin

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

七月 4. 2009 20:58