Страница 1 из 1

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

Добавлено: Чт 12 апр 2012 14:16
Akella
Проблема с юникодом при передаче текстового параметра.

При открытии 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

Добавлено: Чт 12 апр 2012 15:39
AndreyZ
Здравствуйте,

Вы забыли добавить 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

Добавлено: Чт 12 апр 2012 17:30
Akella
а я думал, что проблема юникоде, т.к. сообщение было с кракозябрами.

Добавлено: Чт 12 апр 2012 17:37
Akella
Вопрос в догонку.
А почему исключение вываливается 3 раза?

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