[C#][DB2]DB2資料轉型

標題騙人法,這其實是很基本的資料庫連接,只是我碰到了一點問題…

其實我一直認為這跟一般連結MSSQL一樣,下個Connection,弄個DataAdapter丟DataTable就算了

但是實做才發現事情並沒有那麼簡單,總之一開始先跑去NuGet找找Package

裝上了,下個using IBM.Data.DB2;試試看,看起來好像可以用

Run了之後總是跳出找不到"db2app64.dll"這傢伙,拜了Google大神後才明白原來得裝IBM Data Server Client Packages

裝了可終於正常運作…才怪,問題這時候才出現,撈出來的資料某個欄位將中文轉Big5編碼,搞得我還得多對那欄位轉碼變回中文

再度拜了Google大神,修修改改,終於把特定欄位的值給全數轉碼完畢,以下是傷眼程式碼與註解

public void Data_Trans()
        {
            ds.Tables[0].Columns.Add("CNAME"); //先多加一個欄位,等等拿來放解碼後的資料
            ds.Tables[0].Columns["CNAME"].SetOrdinal(1); //調整一下欄位位置

            foreach (DataColumn col in ds.Tables[0].Columns)
            {
                if (col.DataType == typeof(byte[]))//將欄位資料型態為byte[]的所有值全數轉型,並放進新column
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        row["CNAME"] = Encoding.GetEncoding("BIG5").GetString((byte[])row["col"]);
                    }
                }
            }
        }

這樣就得到中文資料囉~再來要對這個DataTable做些什麼就輕鬆許多了

 

 

單純筆記,皆為非正規作法,旁門左道,胡搞瞎搞。