Конференция "Базы" » Кодировка параметров SQL-запросов
 
  • prezervogaz (03.04.10 14:06) [0]
    Здравствуйте!

    Я пытаюсь работать с базой данных MySQL через компоненты ADO (драйвера ODBC). Пытаюсь вставить запись в таблицу следующим образом:

    mainQuery.SQL.Append('INSERT INTO test (text) VALUES (:text_);');
    mainQuery.Parameters.ParamByName('text_').Value:=t estDialog.full_name mainQuery.ExecSQL();

    Проблема в том, что этот способ не работает с русскими символами (вставляются знаки '?'). Причём редактирование той же базы посредством компонентов типа DBGrid работает нормально.

    В чём проблема? Понятно, что нужно подшаманить как-то с кодировкой, но как именно?

    Параметры я пробовал создавать по-разному:

    mainQueryParameters.CreateParameter('test_',ftWide String,pdInput, 300, testDialog.full_nameEdit.Text);
    mainQueryParameters.CreateParameter('test_',ftStri ng,pdInput, 300, testDialog.full_nameEdit.Text);

    со всеми вариантами-тоже самое.
    Сервер- MySQL 5.1.30, Delphi 7. Кодировка базы данных-cp1251
  • turbouser © (03.04.10 15:36) [1]

    >
    > prezervogaz   (03.04.10 14:06)  


    > Я пытаюсь работать с базой данных MySQL

    Забей. Возьми что нибудь нормальное.
  • sniknik © (03.04.10 16:29) [2]
    > что нужно подшаманить как-то с кодировкой, но как именно?
    проверить всю цепочку, параметр - соединение - драйвер - сервер  везде должна быть одна кодировка.
    проверь например без параметра, прописать русскими в запросе (не то чтобы так постоянно нужно делать, но проверка исключит параметр, и если получится ясно где не настроено)

    + где то видел, есть драйвера у которых этого нет в соединении, но можно задавать командой типа SET names xxx COLLATE xxxx.
 
Конференция "Базы" » Кодировка параметров SQL-запросов
Есть новые Нет новых   [134433   +22][b:0][p:0]