x32舊版程式如何移至 x64
1. 原odbc 連接要改為新版odbc 的連接語法, 例如 ACE.15.0
2. 在x64上原 report 要執行兩個原廠的 x64 patch .
3. x64上的權限關係, 存放 資料庫的資料夾, 記得要開放權限. , 否則會連不上.
2019年12月27日 星期五
2011年12月20日 星期二
差點讓我冒冷汗的 vs2005 unicode 問題.
由於VS2005 一直號稱沒有UNICODE 的問題, 所以我一直 對於VS2005 UNICODE 很放心的. 不料在作一次展示時. 卻發現 "堃", "浜" 等字, 寫入至 SQL SERVER 時出現 ??.
一開始以為 是 SQL SERVER 上該欄位沒有使用 NVARCHAR 的關係, 不料把欄位改成 NVARCHAR 後, 執行程式, 寫入上面兩個字時, 仍出現? .
於是我開始冒冷汗, 難道是我搞錯了嗎? 還好有Google 大神的幫忙, 最後才發現. 原來是在SQL SERVER 要寫入含有 上面提到的這些特別字時, 須要在 寫入字串的單引號前加入一個 N 字, 這樣這些字才不會變成亂碼寫入到資料庫.
例如:
UPDATE AA SET NAME = N'王堃浜' <== 如果 少了N , 則寫入到SQL SERVER 的字仍會是亂碼.
真是........
如果是用 C#, 則可以參考下面寫法:
string MySql = "UPDATE MYTABLE SET ";
MySql += " NAME = N'" + txtNAME.Text.Trim() + "' ";
MySql += " WHERE CODE = '" + txtNO.Text.Trim() + "' ";
注意上面的例子, 在字串單引號前,記得要加N指明這個是UNICODE 的字串, 這樣就可以存入UNICODE 的字元到SQL SERVER 內.
一開始以為 是 SQL SERVER 上該欄位沒有使用 NVARCHAR 的關係, 不料把欄位改成 NVARCHAR 後, 執行程式, 寫入上面兩個字時, 仍出現? .
於是我開始冒冷汗, 難道是我搞錯了嗎? 還好有Google 大神的幫忙, 最後才發現. 原來是在SQL SERVER 要寫入含有 上面提到的這些特別字時, 須要在 寫入字串的單引號前加入一個 N 字, 這樣這些字才不會變成亂碼寫入到資料庫.
例如:
UPDATE AA SET NAME = N'王堃浜' <== 如果 少了N , 則寫入到SQL SERVER 的字仍會是亂碼.
真是........
如果是用 C#, 則可以參考下面寫法:
string MySql = "UPDATE MYTABLE SET ";
MySql += " NAME = N'" + txtNAME.Text.Trim() + "' ";
MySql += " WHERE CODE = '" + txtNO.Text.Trim() + "' ";
注意上面的例子, 在字串單引號前,記得要加N指明這個是UNICODE 的字串, 這樣就可以存入UNICODE 的字元到SQL SERVER 內.
訂閱:
意見 (Atom)