Как записать в базу слеш (PostgreSQL + zeos) ?

Вопросы программирования и использования среды Lazarus.

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

Как записать в базу слеш (PostgreSQL + zeos) ?

Сообщение heks » 23.07.2012 12:27:26

PostgreSQL 9.1.4, Zeosdbo 6.6.6, Lazarus 0.9.30.4, fpc 2.6.0 , win32/win64
Функция в базе:
Код: Выделить всё
FUNCTION idapp_add_event(text, text, text, text)
...
insert into idapp_event (id,idevent,app_exe_name,app_path,app_ver) values (f_id,$1,$2,$3,$4);
....

Вызов на клиенте:
Код: Выделить всё
...
  with dm.qry_idapp_add_event do
  begin
    ParamByName('p1').Value:=sEvent;
    ParamByName('p2').Value:=ExecFile;
    ParamByName('p3').Value:=ExecPath; \\   'c:\lazarus.projects\test\'
    ParamByName('p4').Value:=Version;
    try
      ExecSQL;
...

dm.qry_idapp_add_event - TZReadOnlyQuery, содержит SQL:
select * from idapp_add_event (:p1,:p2,:p3,:p4)

Все параметры указаны как ftString

При записи в базу, вместо 'c:\lazarus.projects\test\' пишется 'c:\134lazarus.projects\134test\134'
QuoteStr не помогло, да и не должно бы, ибо, как мне казалось , использование ParamByName , а не динамического
формирования SQL , должно решать всякого рода такие проблемы. (до этого использовал только Delphi6 +PostgesDAC)

Подскажите, куда копать?
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: Как записать в базу слеш (PostgreSQL + zeos) ?

Сообщение alexs » 23.07.2012 20:31:19

heks
Есть такая проблема.
Я для себя пропатчил исходики- убрал это дурацкое приведение спец.символов.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Как записать в базу слеш (PostgreSQL + zeos) ?

Сообщение heks » 24.07.2012 13:05:25

alexs писал(а):Есть такая проблема.
Я для себя пропатчил исходики- убрал это дурацкое приведение спец.символов.

Да, спасибо. Патчил тут
Код: Выделить всё
if (SrcBuffer^ in [#0, '''']) or ((SrcBuffer^ = '\') and (LastState = 0)) then

Похоже, что ParamByName тоже надо править, ибо с апострофом такая же проблема.
Не ParamByName.Value не ParamByName.AsString не удваивают апостроф, или я не прав?
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: Как записать в базу слеш (PostgreSQL + zeos) ?

Сообщение alexs » 24.07.2012 22:02:39

Удвоение апострофа происходит уже при создании самого текста запроса перед отправкой на сервер.
Параметры обрабатываются немного раньше.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru
cron