SQL 找不到中文記錄 |
答題得分者是:P.D.
|
lafite
一般會員 發表:4 回覆:7 積分:2 註冊:2003-08-29 發送簡訊給我 |
平台:delphi 5 + MS-SQL 2003 (英文版)
資料庫裡的 stdName 是用nchar, 當我用中文名稱作為搜索時, 就會找不到任何記錄 他傳回的 record count 是 0. 英文名搜索是沒問題的. 還有是中文名顯示和列印都是沒問題的. 我也嘗試設定 Auto Translate = true. 若設為 true 就會找到一堆亂碼的記錄. 所以請問各位大大, 以下的sql在那裡出了錯誤. [code delphi] ADOQstd.Active := False; ADOQstd.SQL.Clear; ADOQstd.SQL.Add('select stdTBL."stdNo",stdTBL."stdName"'); ADOQstd.SQL.Add('from stdTbl'); ADOQstd.SQL.Add('where stdTBL."stdName" like :txdata'); ADOQstd.SQL.Add('order by stdTBL."stdNo"'); ADOQstd.Parameters.ParamByName('txdata').Datatype := ftString; ADOQstd.Parameters.ParamByName('txdata').Value := '%' EdName.text '%'; ADOQstd.Active := true; [/code] |
lafite
一般會員 發表:4 回覆:7 積分:2 註冊:2003-08-29 發送簡訊給我 |
我嘗試過測驗過 access 和 SQL 2003
發現用想同的一個程式碼, 只是更改了 AOD Connection Access 是可以中文來搜索. 而 SQL 2003 就會是找不到 測試一 D5 Access 的 database, 而 field type 試為 char , Database 輸入中文內容後, 可成功搜索 測試二 D5 SQL 2003 的 database, 而 field type 試為 char , Database 輸入中文內容後, 變成亂碼 測試三 D5 SQL 2003 的 database, 而 field type 試為 nchar , Database 輸入中文內容後, 但找不到記錄 請問各位大大, 這樣的測試是不是能代表是 SQL 2003 的內部問題呢 若果要成功在 SQL 2003 裡找到中文記錄, 要如何修改 SQL 2003 . 請各位大大幫幫忙. 謝謝. |
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
首先, 你要先完全了解 char, nchar, varchar 的不同點, 如果不清楚, 這裡有一篇可供參考
http://blog.blueshop.com.tw/topcat/archive/2007/09/06/52318.aspx 再來, nchar是unicode 型態, delphi目前為止沒有任何元件支援unicode, 所以不管你怎麼測都是不對, 除非使TNT 第三, SQL中被定義為nchar的型態欄位, 在delphi中必須宣告變數為 widestring 才可以使用(很久沒使用nchar格式, 我記得應該是這樣) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |