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

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

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

Ответить
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

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

Сообщение t-ea »

В программе примерно следующий код

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

S:='update table1 (field1, field2) values (''Имя'', ;''Время - 12:45:00'')';
query.SQL[1]:=S;
query.ExecSQL;

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

Надо ли как нибудь экранировать двоеточия в строке-выражении чтобы объяснить mse что никаких параметров в строке нет?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

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

экранировать не надо, возможно надо будет отключить автоматический prepare , название параметра не помню, поищи по созвуючию
Аватара пользователя
gotozero
новенький
Сообщения: 15
Зарегистрирован: 14.10.2008 12:34:36

Сообщение gotozero »

prepare statement
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

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

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

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

Сообщение gotozero »

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

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

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


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

Только я не пойму причем тут параметры, насколько я понял у тебя идут вставки но не хватает 1000 строк!
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

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

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

Сообщение debi12345 »

query.ParseSQL:= false.
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

В древних временах был 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
Ответить