Параметризованный запрос не выполняется при вставке определенных символов Юникода - PullRequest
6 голосов
/ 18 января 2012

У меня проблема при попытке вставить определенные символы через запрос с параметрами.

Когда я запускаю следующий запрос (без параметров), все работает нормально.

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-разрядный) и Client SDK 3.50 установлены и работают должным образом. База данных создается с помощью en_US.utf8 или cs_CZ.8859-2.

Один из неудачных символов - это ¬ (Unicode 172).

Кто-нибудь видел эту ошибку? Что может быть причиной? Есть ли какая-то дополнительная конфигурация, которую необходимо выполнить в драйвере?

1 Ответ

3 голосов
/ 18 января 2012

Я получил ответ на форуме разработчиков IBM. Эта ошибка была исправлена ​​в последнем пакете исправлений.

Это можно решить, установив пакет Fix Pack или установив переменную среды DB2CODEPAGE = 1208

https://www.ibm.com/developerworks/forums/thread.jspa?messageID=14779728&#14779728

...