Страница 1 из 1
Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 16:49:24
t-ea
В программе примерно следующий код
Код: Выделить всё
S:='update table1 (field1, field2) values (''Имя'', ;''Время - 12:45:00'')';
query.SQL[1]:=S;
query.ExecSQL;
Таким способом генерируется порядка 50000 строк (у них естественно разные значения полей), однако около 1000 строк не добавляется.
Надо ли как нибудь экранировать двоеточия в строке-выражении чтобы объяснить mse что никаких параметров в строке нет?
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 17:11:50
Attid
t-ea
а почему не используешь параметры ?
экранировать не надо, возможно надо будет отключить автоматический prepare , название параметра не помню, поищи по созвуючию
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 17:38:13
gotozero
prepare statement
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 17:56:41
t-ea
А-а, издревле там запрос сам собирается…
Свойства prepare не нашёл, может ParseSQL?
А что я должен сделать с PrepareStatement?
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 19:43:46
gotozero
t-ea писал(а):А-а, издревле там запрос сам собирается…
Свойства prepare не нашёл, может ParseSQL?
А что я должен сделать с PrepareStatement?
ну по идее ParseSQL по моему как раз то что нужно!
если его отключить поиск параметров не осуществляеться!
Только я не пойму причем тут параметры, насколько я понял у тебя идут вставки но не хватает 1000 строк!
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 19.11.2008 20:28:01
Attid
t-ea писал(а):А-а, издревле там запрос сам собирается…
МСЕ в древних временах еще не было =)
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 20.11.2008 14:49:14
debi12345
query.ParseSQL:= false.
Re: Надо ли экранировать двоеточие в SQL-выражении UPDATE?
Добавлено: 21.11.2008 15:11:45
t-ea
В древних временах был Delphi3, компонент Table и сброс в текстовый файл.
Переключение ParseSQL не помогло, но это уже и неважно.
Строки не добавлялись из-за заглавной кириллической буквы «Ч».
В процедуре ParseSQL (модуль mseDB) при встрече в строке апострофа, срабатывала ветка содержащая код
FPC 2.2.0 при выполнении этой операции, если p^ была равна «Ч», считал что условие выполнено и выходил из цикла (младший байт «Ч» как раз апостроф). Естественно дальше строка обрабатывалась неправильно так как нарушался порядок следования апострофов.
Скачал FPC 2.2.2, установил, запустил программу, проверил на котрольной строке содержащей «Ч», вроде стало работать правильно.
Но теперь другая проблема — поля типа дата при присвоении их переменной типа msestring, помещают туда не строковое представление даты, а его числовое значение, т.е. вместо '01.01.1950' туда помещается '12345'.
Более подробно в отдельной теме
http://freepascal.ru/forum/viewtopic.php?f=11&t=3866