[DotNet] 連線至 MySQL 資料發生亂碼解決方案

[DotNet] 連線至 MySQL 資料發生亂碼解決方案

最近公司與某一廠商合作,該廠商 DB 使用 MySQL,由於該系統預設語系為 latin1,故導致使用 DotNet 程式使用 MySQL 原廠提供之 Connector/Net 5.2 進行

呼叫 MySQL DB 時,在中文部份會回應亂碼情況。

 

筆者搜尋 Google 大神得知需更改 MySQL 預設語系為 big5 或 UTP8,也發現不少人在尋問跟我一樣的問題:「可以不修改預設語系就能取得正確的語系回覆?

 

經深入了解得知若要解決此問題,需於與 MySQL DB 建立連線時,就需指定連線的語系(有關建立連線的方法很多文章寫過,故在此不再加己陳述)

基於科技始於人性「」,筆者進一步查詢是否有可以不修改 MySQL DB 設定,亦不需指定連線使用之語系的方法呢?

 

皇天不負苦心人,那就是使用『MySQLDriverCS』 這套件,這套件是以 C 語言底層概念實作於 DotNet 平台上,然後通過 InteropServices 進行訪問。

 

使用 MySQLDriverCS 步驟如下:

一、下載 MySQLDriverCS 程式:

       筆者是下載 4.0.1 版(MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe)

 

二、安裝 MySQL DB:(預設安裝即為 latin1 語系)

       筆者是使用 5.1.5 版(mysql-connector-odbc-5.1.5-win32.msi)

 

三、C# 程式範例程式:

       1. 將 MySQLDriverCS.dll 參考於專案中。

       2. 於 App.config 或 Web.config 之 connectionStrings 標籤內新增以下連線資訊:

          <add name="<Area Name>" connectionString="Location=<Database Address>;Data Source=<Database Name>;User ID=<User>;Password=<Password>;"/>

 

          Ex:(以下為範例)

          Area Name = Test

          Database Address = 127.0.0.1

          Database Name = TTT

          User = TestUser

          Password = TestTest

          <add name="Test" connectionString="Location=127.0.0.1;Data Source=TTT;User ID=TestUser;Password=TestTest;"/>

 

       3. 進行程式連線測試:

   1:  using (MySQLConnection objConn = new MySQLConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString))
   2:  {
   3:      objConn.Open();
   4:  
   5:      using (MySQLCommand objCmd = (MySQLCommand)objConn.CreateCommand())
   6:      {
   7:          objCmd.CommandText = "SELECT * FROM TTT.dbo.TestTable";
   8:  
   9:          using (MySQLDataReader objDr = (MySQLDataReader)objCmd.ExecuteReader())
  10:          {
  11:              if (objDr.HasRows)
  12:              {
  13:                  if (objDr.Read())
  14:                      // 印出資訊
  15:              }
  16:          }
  17:      }
  18:  }

 

參考資源:實用的 Connection String 網站 (ConnectionStrings.com)

                 技巧 .NET如何訪問MySQL數據庫

分享