2012-01-18 125 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)。

有没有人看到这个错误?可能是什么原因?是否需要在驱动程序上执行一些其他配置?

回答