#.net #unicode #ado.net #db2 #dataset
#.net #юникод #ado.net #db2 #набор данных
Вопрос:
Я пытаюсь сохранить символ товарного знака (™) в базе данных DB2 iSeries. Кодировка столбца использует CCSID 1200, и вставка / выбор с использованием собственного sql работает нормально. Когда я пытаюсь сохранить его, используя .net dataset на C #, я получаю ошибку преобразования. Насколько я понял, поставщик данных DB2 отправляет по умолчанию в двоичном формате, так что это должно сработать.
Спасибо за вашу помощь!
Комментарии:
1. Определите явно, с идентификатором сообщения и текстом, что такое » ошибка преобразования «; лучше всего также поделиться фрагментом кода о том, что делается для его сохранения с использованием набора данных .net на C # . Отправка двоичного текста в столбцы с тегами UTF практически не поддерживается; аналогично приведению между ДВОИЧНЫМ и символьным типами практически невозможно. Примечание:
DB2
Тег является общим, тогдаDB2i
как тег идентифицирует DB2 для IBM i [или для более старого DB2 для IBM i5 / OS, как ранее известный как DB2 / 400,DB2400
тег работает аналогично], в отличие от других вариантов DB2.2. Единственная информация, которую я получаю, это «Произошла ошибка преобразования», не более того. Код является стандартным ADO.NET набор данных, ничего особенного. Я имел в виду, что SQL отправляется как SQL_BINARY, а не сам столбец (по крайней мере, так говорится в документации поставщика).
Ответ №1:
попробуйте вставить в столбец varchar следующим образом
insert into jgrun.tmp2
values x'39'
Комментарии:
1. Намереваясь выполнить что? В виде 7-разрядного ASCII это будет цифра
'9'
, а в виде EBCDIC это будет управляющий символ. Конечно, это не может быть хитрым способом вставить в таблицу знак торговой марки ™ (U 2122) или UTF8 0xE2 0x84 0xA2 через C #?