OracleClient中加入Unicode=true

  • 7075
  • 0
  • 2012-04-20

OracleClient中加入Unicode=true

Dotblogs 的標籤: ,

這個問題已經不是第一次在專案中發生了,上一次發生是在 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"/>

--------
沒什麼特別的~
不過是一些筆記而已