Lazarus не правильно работает с SQL?

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

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

Ответить
sadavod
новенький
Сообщения: 18
Зарегистрирован: 27.12.2009 13:30:29

Lazarus не правильно работает с SQL?

Сообщение sadavod »

пишу в конструкторе запросов select "id_users" from "IP" where ip='192.168.1.33' limit 1; РАБОТАЕТ
пишу в конструкторе запросов select "id_users" from "IP" where ip='192.168.1.33' limit '1'; РАБОТАЕТ

пишу в LAZARUS SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='''192.168.1.33''' limit 1;'); НЕ РАБОТАЕТ
пишу в LAZARUS SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='''192.168.1.33''' limit '''1''';'); НЕ РАБОТАЕТ

пишу в LAZARUS SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='''192.168.1.33''''); РАБОТАЕТ
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='#39'192.168.1.33'#39' limit 1'); - тоже не работает?
sadavod
новенький
Сообщения: 18
Зарегистрирован: 27.12.2009 13:30:29

Сообщение sadavod »

Brainenjii писал(а):SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='#39'192.168.1.33'#39' limit 1'); - тоже не работает?

Увы, Ошибка при выполнении SQL запроса
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

sadavod
Текст сообщения об ошибке в студию :wink:
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

С какой СУБД работаете?
sadavod
новенький
Сообщения: 18
Зарегистрирован: 27.12.2009 13:30:29

Сообщение sadavod »

postgresql Способ может кому будет полезным как это дело обойти

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

select "id_users" from "IP" where ip='192.168.1.33' order by "id_users" LIMIT 1 OFFSET 0;')


Разобрался, с селектом но вот с Инсертом бьюсь все не вкакую,
скажите люди, почему один и тот же запрос работает в pgAdmin и терминале, но не вкакую не хочет работать в Lazarus,
он что совсем еще сырой (Lazarus) или может стоит переходить на сторонние компоненты, или еще чего?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

sadavod
Здесь дело обстоит в том (как я предполагаю), что Query занимается проверкой введённого запроса и если он не соответствует спецификации SQL посылает его нафиг.
sadavod
новенький
Сообщения: 18
Зарегистрирован: 27.12.2009 13:30:29

Сообщение sadavod »

Mr.Smart писал(а):sadavod
Здесь дело обстоит в том (как я предполагаю), что Query занимается проверкой введённого запроса и если он не соответствует спецификации SQL посылает его нафиг.

Люди добрые да дайте же посмотреть на эту спецификацию, а то новый год чуствую проведу за монитором.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Ищите и читаете стандарт SQL-92 :wink:

Добавлено спустя 2 минуты 3 секунды:
А вообще попробуйте другие компоненты для доступа или же свойство ParseSQL установите в false.
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

sadavod писал(а):скажите люди, почему один и тот же запрос работает в pgAdmin и терминале, но не вкакую не хочет работать в Lazarus,
он что совсем еще сырой (Lazarus) или может стоит переходить на сторонние компоненты, или еще чего?

Все работает весьма хорошо, просто есть некоторые особенности реализации в паскале.
Аватара пользователя
gotozero
новенький
Сообщения: 15
Зарегистрирован: 14.10.2008 12:34:36

Сообщение gotozero »

sadavod писал(а):пишу в конструкторе запросов select "id_users" from "IP" where ip='192.168.1.33' limit 1; РАБОТАЕТ
пишу в конструкторе запросов select "id_users" from "IP" where ip='192.168.1.33' limit '1'; РАБОТАЕТ

пишу в LAZARUS SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='''192.168.1.33''' limit 1;'); НЕ РАБОТАЕТ
пишу в LAZARUS SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='''192.168.1.33''' limit '''1''';'); НЕ РАБОТАЕТ

пишу в 'select "id_users" from "IP" where ip='''192.168.1.33'''');[/color] [/b]РАБОТАЕТ


Попробуй:

SQLQuery1.SQL.Add('select "id_users" from "IP" where ip=''192.168.1.33'' limit 1;');
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

И еще через параметры можно. Я бы даже сказал нужно.
sadavod
новенький
Сообщения: 18
Зарегистрирован: 27.12.2009 13:30:29

Сообщение sadavod »

SQLQuery1.SQL.Add('select "id_users" from "IP" where ip=''192.168.1.33'' limit 1;'); ГЕННИАЛЬНО :)
Аватара пользователя
gotozero
новенький
Сообщения: 15
Зарегистрирован: 14.10.2008 12:34:36

Сообщение gotozero »

Climber писал(а):И еще через параметры можно. Я бы даже сказал нужно.

+1
У вас динамический SQL.
В будущем, старайтесь использовать переменные подстановки. Нужно это для того, чтобы база данных не парсила заново ваш SQL, а брала готовый из памяти. Очень серьезно может отразиться на производительности БД. По крайней мере это актуально для Oracle.
Ответить