2012-01-18 168 views
6

嘗試通過帶參數的查詢插入某些字符時出現問題。插入某些Unicode字符時,參數化查詢失敗

當我運行以下查詢(不涉及參數),一切工作正常。

string insertQuery = "insert into 'testschema'.texttypestestobject(columnshortstring,columnlongstring)values('¬','test')"; 
DB2Command myCommand = new DB2Command(insertQuery, conn); 
myCommand.ExecuteNonQuery(); 

但是,如果我運行下面的查詢,它會失敗。

string insertQuery = "insert into 'testschema'.texttypestestobject(columnshortstring,columnlongstring)values(@p0,@p1')"; 
DB2Command myCommand = new DB2Command(insertQuery, conn); 
myCommand.Parameters.Add(new DB2Parameter("@p0", "¬")); 
myCommand.Parameters.Add(new DB2Parameter("@p1", "test")); 
myCommand.ExecuteNonQuery(); 

的錯誤是:

Executing Sql 'insert into 'testschema'.texttypestestobject(columnshortstring,columnlongstring)values(@p0,@p1)' 
with parameters '{¬},{ test}' exception 'IBM.Data.DB2.DB2Exception (0x80004005): 
ERROR [IX000] [IBM][IDS/NT64] Code-set conversion function failed due to illegal 
sequence or invalid value. 

Informix服務器11.70(64位)和客戶端SDK 3.50安裝,並且工作正常。數據庫使用en_US.utf8或cs_CZ.8859-2創建。

其中一個失敗的字符是'¬'(Unicode 172)。

有沒有人看到這個錯誤?可能是什麼原因?是否需要在驅動程序上執行一些其他配置?

回答