powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как перекодировать кириллические символы C# 2010 в коды Informix ?
9 сообщений из 9, страница 1 из 1
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38086575
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток.
В программе создается и выполняется команда Update-SQL, в текст которой необходимо включить русские/украинские буквы.
Informix вместо букв видит символы "?".

Как правильно перекодировать строку команды ?
Срочно нуждаюсь в решении.
Заранее благодарен.
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38086695
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.,

работа с кодировками имеет свою специфику в каждой БД так что если хочешь чтобы тебе помогли то приведи больше информации:

- Покажи код соединения БД, формирования и выполнения запроса

- Приведи строку соединения или другие парамемтры подключения к БД

- Нужна схема таблицы к которой ты обращаешься.

- Региональные настройки Informix которые могут влиять на работу с кодировкой. В SQL Server на это например влияет collation. Вполне возможно что в Informix тоже самое.

- Какая версия Informix?

- Какая версия драйвера ODBC? Вот здесь пишут что для работы с Unicode нужен драйвер 3.80 или выше.
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38086777
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

1.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    cnn = new OdbcConnection();
    cnn.ConnectionString = Properties.Settings.Default.cnnString; //cnnString="DSN=...;PWD=...;UID=..."
    ds = new DataSet();
    da = new OdbcDataAdapter(SelectText, cnn);
    try
        {
             da.Fill(ds, "FoundDoc");
             ..............................
        }
    ....................................
    string UpdateText = "";

    UpdateText += "UPDATE payordemployee SET";
    UpdateText += AddSet; // строка вида "fieldname1 = value1, ..., fieldnameN = valueN
                                     // valueN - значения св-ва Text текстовых полей
    UpdateText += " WHERE idemployee = " + ds.Tables["FoundDoc"].Rows[0].ItemArray[0].ToString().Trim() + ";";

    OdbcCommand cmd = cnn.CreateCommand();
    cmd.CommandText = UpdateText;
                    
    try
        {
             cnn.Open();

             try
                 {
                      cmd.ExecuteNonQuery();
    ................................



2. Используется драйвер INTERSOLV Informix Driver v.3.10
3. Версия Informix - 10.00

Не пойму почему в одних случаях при тех же условиях SQL операторы нормально работают, а в других случаях - нет.
Может проблема в способе получения значения через DataSet.Tables[n].Rows[m].ItemArray[k] ?
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087063
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне стыдно, но пришла "гениальная мысль": может дело вообще не в кодировке, а в нарушении ссылочной целостности?
Вот что гласит сообщение об ошибке:

Check constraint (informix.prdempl_doctp) failed.

Можно ли как-то обойти подобные ограничения?
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087074
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.Можно ли как-то обойти подобные ограничения?

Обойти ограничения можно - отключив их
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087085
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IkirОбойти ограничения можно - отключив их

А на каком уровне это делается?
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087121
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.А на каком уровне это делается?

Понятно. Значит не вы их придумали. Тогда лучше эти ограничения не нарушать.
Описание констрейнта constraint (informix.prdempl_doctp) - в студию.
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087162
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.,

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

Юрий Р.может дело вообще не в кодировке, а в нарушении ссылочной целостности?
Сильно сомневаюсь. Данные ведь у тебя обновляются, только текст "портится"?

Юрий Р.Не пойму почему в одних случаях при тех же условиях SQL операторы нормально работают, а в других случаях - нет.
Может проблема в способе получения значения через DataSet.Tables[n].Rows[m].ItemArray[k] ?
Дело точно не в способе обращения. Запросы одинаковые формируются? Типы данных в колонках одинаковые? А то может в одной char, а в другой nchar.

Я не спец по Informix, но вот нашел пару советов ( раз , два ) использовать переменные окружения Client_Locale и DB_Locale. Они у тебя есть?

P.S. Тебе стоит подумать об использовании параметризованных запросов вместо динамического SQL чтобы защититься от SQL Injection атак.
...
Рейтинг: 0 / 0
Как перекодировать кириллические символы C# 2010 в коды Informix ?
    #38087177
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Всем откликнувшимся приношу свои искренние извинения за мою неосведомленность.

Разобрался я с этим констрейнтом. Оказывается отдельные поля просто были закрыты
для обновления пока объединяющее их по смыслу поле пустое. В частности речь идет
о виде удостоверения (паспорте). Пока вид документа не указан бесполезно вводить
серию, номер и т.п. И кодировка здесь не при чем.

Огромное спасибо за участие в решении проблемы.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как перекодировать кириллические символы C# 2010 в коды Informix ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]