Lazarus не правильно работает с SQL?
Модератор: Модераторы
Lazarus не правильно работает с SQL?
пишу в конструкторе запросов 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''''); РАБОТАЕТ
пишу в конструкторе запросов 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
SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='#39'192.168.1.33'#39' limit 1'); - тоже не работает?
Brainenjii писал(а):SQLQuery1.SQL.Add('select "id_users" from "IP" where ip='#39'192.168.1.33'#39' limit 1'); - тоже не работает?
Увы, Ошибка при выполнении SQL запроса
sadavod
Текст сообщения об ошибке в студию
Текст сообщения об ошибке в студию
С какой СУБД работаете?
postgresql Способ может кому будет полезным как это дело обойти
Разобрался, с селектом но вот с Инсертом бьюсь все не вкакую,
скажите люди, почему один и тот же запрос работает в pgAdmin и терминале, но не вкакую не хочет работать в Lazarus,
он что совсем еще сырой (Lazarus) или может стоит переходить на сторонние компоненты, или еще чего?
Код: Выделить всё
select "id_users" from "IP" where ip='192.168.1.33' order by "id_users" LIMIT 1 OFFSET 0;')Разобрался, с селектом но вот с Инсертом бьюсь все не вкакую,
скажите люди, почему один и тот же запрос работает в pgAdmin и терминале, но не вкакую не хочет работать в Lazarus,
он что совсем еще сырой (Lazarus) или может стоит переходить на сторонние компоненты, или еще чего?
sadavod
Здесь дело обстоит в том (как я предполагаю), что Query занимается проверкой введённого запроса и если он не соответствует спецификации SQL посылает его нафиг.
Здесь дело обстоит в том (как я предполагаю), что Query занимается проверкой введённого запроса и если он не соответствует спецификации SQL посылает его нафиг.
Mr.Smart писал(а):sadavod
Здесь дело обстоит в том (как я предполагаю), что Query занимается проверкой введённого запроса и если он не соответствует спецификации SQL посылает его нафиг.
Люди добрые да дайте же посмотреть на эту спецификацию, а то новый год чуствую проведу за монитором.
Ищите и читаете стандарт SQL-92 
Добавлено спустя 2 минуты 3 секунды:
А вообще попробуйте другие компоненты для доступа или же свойство ParseSQL установите в false.
Добавлено спустя 2 минуты 3 секунды:
А вообще попробуйте другие компоненты для доступа или же свойство ParseSQL установите в false.
sadavod писал(а):скажите люди, почему один и тот же запрос работает в pgAdmin и терминале, но не вкакую не хочет работать в Lazarus,
он что совсем еще сырой (Lazarus) или может стоит переходить на сторонние компоненты, или еще чего?
Все работает весьма хорошо, просто есть некоторые особенности реализации в паскале.
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;');
И еще через параметры можно. Я бы даже сказал нужно.
SQLQuery1.SQL.Add('select "id_users" from "IP" where ip=''192.168.1.33'' limit 1;'); ГЕННИАЛЬНО 
Climber писал(а):И еще через параметры можно. Я бы даже сказал нужно.
+1
У вас динамический SQL.
В будущем, старайтесь использовать переменные подстановки. Нужно это для того, чтобы база данных не парсила заново ваш SQL, а брала готовый из памяти. Очень серьезно может отразиться на производительности БД. По крайней мере это актуально для Oracle.
