Юникод при передаче текстового параметра

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Юникод при передаче текстового параметра

Сообщение Akella » Чт 12 апр 2012 14:16

Проблема с юникодом при передаче текстового параметра.

При открытии TUniQuery:
Project raised exception class EMySqlException with message '
#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'login = 'Администратор'' at line 7'.

потом появляется такое исключение 2 раза подряд.
Project rp.exe raised exception class EMyError with message '
#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'login = 'Администратор'' at line 7'.

в ConnectionOptions:
charset = utf8
UseUnicode = True

вот запрос

Код: Выделить всё

select id, login, fio, phone1, phone2, is_expert_agent from users

where
  is_deleted = 0 and
  is_blocked = 0 and
  password = :pass
  login = :login

Код: Выделить всё

    qCheckPass.ParamByName('login').AsString := edName.Text;
    qCheckPass.ParamByName('pass').AsString  := edPassword.Text;
    qCheckPass.Open;
Данные в гриде отображаются нормально, если сделать выборку.
Что не так?

UniDAC 4.1.6
Delphi XE2

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Сообщение AndreyZ » Чт 12 апр 2012 15:39

Здравствуйте,

Вы забыли добавить AND в Вашем запросе. Вот корректный запрос:

Код: Выделить всё

select id, login, fio, phone1, phone2, is_expert_agent from users
where 
is_deleted = 0 and 
is_blocked = 0 and 
password = :pass and
login = :login

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Чт 12 апр 2012 17:30

а я думал, что проблема юникоде, т.к. сообщение было с кракозябрами.

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Чт 12 апр 2012 17:37

Вопрос в догонку.
А почему исключение вываливается 3 раза?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Сообщение AndreyZ » Пт 13 апр 2012 13:39

Если Вы запускаете приложение из Delphi, то Вы увидите все исключения генерируемые приложением, обработанные и необработанные. При запуске исполняемого приложения (exe), Вы увидите только не обработанное исключение. Если Вы не хотите видеть обработанные исключения при запуске приложения из Delphi, Вы можете выключить опцию "Stop on Delphi Exceptions" на закладке "Language Exceptions" опций отладчика (главное меню Delphi->Debugger Options).

Закрыто