標題騙人法,這其實是很基本的資料庫連接,只是我碰到了一點問題…
其實我一直認為這跟一般連結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做些什麼就輕鬆許多了
單純筆記,皆為非正規作法,旁門左道,胡搞瞎搞。