delphi firebird



Автор Awesome awesome задал вопрос в разделе Другие языки и технологии

Delphi и FireBird и получил лучший ответ

Ответ от Jurijus Zaksas[гуру]
Во-первых, могут получаться несколько инсертов подряд, потому как SQL.Clear я что-то в твоем коде не заметил, а во-вторых практика показывает, что чем меньше играешься с параметрами, тем стабильнее код. Я бы написал проще: with Datamodule3.IBQuery2 do begin if Active then Close; SQL.Text:=Format(INSERT INTO STUDENTS (ID,NAME, MEDIUM_NAME, LAST_NAME, BIRTHDATE, PHONE, ADRESS) VALUES (%s,\'\'%s\'\',\'\'%s\'\',\'\'%s\'\',to_date(%s,\'\'yyyymmdd\'\'),\'\'%s\'\',\'\'%s\'\')\',[ \'5\', Trim(edit1.Text), Trim(edit2.Text), Trim(edit3.Text), FormatDateTime(\'yyyymmdd\',DBDateTimeEditEh1.Value), Trim(edit5.Text), Trim(edit6.Text)]); ExecSQL; end; Те же яйца, вид сбоку, но гораздо компактнее. Тут есть только 2 момента: я не уверен, так ли работает фаербёрдовский to_date и такой метод программирования открывает путь к интересной штуке, называемой SQL injection. Чтобы этого избежать, надо немножко дополнительно обработать вставляемые строки. Еще один бесплатный совет - избегай вот такого прямого управления транзакциями, как у тебя. Подумай, куда это можно аккуратно поместить и как связать его с общей логикой программы. Кстати, бёрд поддерживает вложенные транзакции - в сочетании с модальными окошками это дает нам стройную и логическую картину, поразмысли.

Ответ от Scorpion[гуру]
может это из-за строчки DataModule3.IBQuery1.SQL.Append('INSERT INTO STUDENTS (ID,NAME, MEDIUM_NAME, LAST_NAME, BIRTHDATE, PHONE, ADRESS) VALUES (:ID,:NAME,:MEDIUM_NAME,:LAST_NAME,:BIRTHDATE,:PHONE,:ADRESS)'); если у тебя он уже прописан в са

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Delphi и FireBird
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*