OracleClient中加入Unicode=true
這個問題已經不是第一次在專案中發生了,上一次發生是在 Net1.1 + Oracle 9i 的環境下,PG 用串接字串的方式去查詢 Oracle 中的資料,串接的 Where 條件中有中文字,結果就會發生:
System.Data.OracleClient.OracleException: ORA-01756: 引號字串未以恰當方式終止
最佳的解決辦法當然是,請不要再串字串 SQL 了!!! 是沒看過 Design Guideline 嗎,講了又講,講了又講,還串字串!!!
改用 OracleCommand,以參數的方式,帶入 OracleType.NVarChar 即可:
1: sSql = "Select * From ADDR_ZIP Where AND HSN = :HSN ORDER BY ZIP "
2: Dim cmd As New OracleClient.OracleCommand
3: cmd.CommandText = sSql
4: cmd.Parameters.Add("HSN", OracleType.NVarChar).Value = "台北市"
但是除了用 OracleCommand 之外,其實在 web.config 的連線字串上,還是可以加個 Unicode=true,也是可以解決啦:
<add key="cn" value="Password=webuser;User ID=webuser;Data Source=DBName;Persist Security Info=false;Unicode=true"/>
--------
沒什麼特別的~
不過是一些筆記而已