Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экранирование кавычек в SQL [D5, MySQL]


АлександрМ ©   (2005-11-30 13:01:00) 

Используя компонент TQuery пытаюсь отправить SQL запрос вида:
UPDATE mytable SET field1="Текст. \" - это кавычка. Опять текст",  field2="Текст" WHERE field3=1111
Для экранирования кавычек использую обратный слеш, в соответствии с документацией по MySQL. Запрос выдаёт ошибку (без кавычки внутри текста запрос проходит). Если этот же запрос передаю в базу например через MySQL Front то всё работает.


ANB   (2005-12-01 09:31:00) [1]


> АлександрМ   (30.11.05 18:16) [9]

А если у тебя в строках бывают разные кавычки - то не фиг парится, а переходи на параметры.
ЗЫ. В оракле \" и \' тоже не работает (другой синтаксис для этого). Обычно приходится использовать для маски в LIKE, например, когда нужно % искать.


Плохиш   (2005-11-30 18:36:00) [2]


> АлександрМ   (30.11.05 18:16) [9]

Т.е. [3] совсем не помогает?


АлександрМ   (2005-11-30 18:16:00) [3]

ANB, тогда двойная кавычка проходит. ;-)
Только одинарные проходить перестают.


ANB   (2005-11-30 15:21:00) [4]


> АлександрМ   (30.11.05 15:09) [7]

Может я чего то путаю, но вы не пробовали обрамляющие кавычки заменить на одинарные ?


АлександрМ   (2005-11-30 15:09:00) [5]

Anatoly Podgoretsky, запрос неработает! То есть, до сервера недоходит, что кавычка должна бытьсимволом. Сервер почему-то считает, что это ограничитель! В результате чего и возникает проблема!


Anatoly Podgoretsky   (2005-11-30 14:51:00) [6]

АлександрМ   (30.11.05 14:31) [5]
Работает он потому, что это информация для сервера, что следующий символ данного литералане ограничитель, а символ.


АлександрМ   (2005-11-30 14:31:00) [7]

Anatoly Podgoretsky, если экранирование не имеет никакого отношения к Query, то почему не работате мой запрос? Как будто ошибка в синтаксисе.

Я бы с радостью не использовал бы параметры. Мне гораздо удобнее составить сразу SQL запрос, чем вводить кучу параметров, а потом каждому присваивать значение.

В общем-то проблему сейчас решил. Спасибо всем за советы. Но непонимание осталось. Почему всё-таки не сработало экранирование обратным слешом?


Anatoly Podgoretsky   (2005-11-30 13:56:00) [8]

АлександрМ   (30.11.05 13:15) [2]
Если будешь использовать параметры, то экранировать нечего.
Во вторых экранирование не имеет никакого отношения к TQuery


Плохиш   (2005-11-30 13:51:00) [9]

quotedstr


АлександрМ   (2005-11-30 13:15:00) [10]

Если я буду использовать параметры, то TQuery сам разбедётся как кавычки экранировать? Сейчас попробую.


Desdechado   (2005-11-30 13:09:00) [11]

а ты параметры не хочешь использовать, а?


Наверх

Титульная страница Поиск, карта сайта Написать письмо