Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение t-ea » 19.11.2008 17:49:24

В программе примерно следующий код
Код: Выделить всё
S:='update table1 (field1, field2) values (''Имя'', ;''Время - 12:45:00'')';
query.SQL[1]:=S;
query.ExecSQL;

Таким способом генерируется порядка 50000 строк (у них естественно разные значения полей), однако около 1000 строк не добавляется.

Надо ли как нибудь экранировать двоеточия в строке-выражении чтобы объяснить mse что никаких параметров в строке нет?
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение Attid » 19.11.2008 18:11:50

t-ea
а почему не используешь параметры ?

экранировать не надо, возможно надо будет отключить автоматический prepare , название параметра не помню, поищи по созвуючию
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение gotozero » 19.11.2008 18:38:13

prepare statement
Аватара пользователя
gotozero
новенький
 
Сообщения: 15
Зарегистрирован: 14.10.2008 12:34:36

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение t-ea » 19.11.2008 18:56:41

А-а, издревле там запрос сам собирается…

Свойства prepare не нашёл, может ParseSQL?

А что я должен сделать с PrepareStatement?
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение gotozero » 19.11.2008 20:43:46

t-ea писал(а):А-а, издревле там запрос сам собирается…

Свойства prepare не нашёл, может ParseSQL?

А что я должен сделать с PrepareStatement?


ну по идее ParseSQL по моему как раз то что нужно!
если его отключить поиск параметров не осуществляеться!

Только я не пойму причем тут параметры, насколько я понял у тебя идут вставки но не хватает 1000 строк!
Аватара пользователя
gotozero
новенький
 
Сообщения: 15
Зарегистрирован: 14.10.2008 12:34:36

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение Attid » 19.11.2008 21:28:01

t-ea писал(а):А-а, издревле там запрос сам собирается…

МСЕ в древних временах еще не было =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение debi12345 » 20.11.2008 15:49:14

query.ParseSQL:= false.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?

Сообщение t-ea » 21.11.2008 16:11:45

В древних временах был Delphi3, компонент Table и сброс в текстовый файл.

Переключение ParseSQL не помогло, но это уже и неважно.

Строки не добавлялись из-за заглавной кириллической буквы «Ч».
В процедуре ParseSQL (модуль mseDB) при встрече в строке апострофа, срабатывала ветка содержащая код
Код: Выделить всё
while not (p^ in [#0, '''']) do begin

end;

FPC 2.2.0 при выполнении этой операции, если p^ была равна «Ч», считал что условие выполнено и выходил из цикла (младший байт «Ч» как раз апостроф). Естественно дальше строка обрабатывалась неправильно так как нарушался порядок следования апострофов.

Скачал FPC 2.2.2, установил, запустил программу, проверил на котрольной строке содержащей «Ч», вроде стало работать правильно.
Но теперь другая проблема — поля типа дата при присвоении их переменной типа msestring, помещают туда не строковое представление даты, а его числовое значение, т.е. вместо '01.01.1950' туда помещается '12345'.
Более подробно в отдельной теме http://freepascal.ru/forum/viewtopic.php?f=11&t=3866
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34


Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru