Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Вниз"правильное" выполнение запросов Найти похожие ветки
← →
Tab (2005-09-20 11:30) [0]В программе выполняются запросы, делаю следующим образом:
Dm.IBQuery2.Close;
Dm.IBQuery2.SQL.Clear;
Dm.IBQuery2.SQL.Add("INSERT INTO DISCIP (DISCIPLINA, SPEC_ID, SEMESTR, PR_ID, TD)");
Dm.IBQuery2.SQL.Add("VALUES ("""+discip.Text+""","+IntToStr(cod_sp2)+","+smstr.Text+", "+IntToStr(cod_pr2)+", "+IntToStr(td)+")");
Dm.IBQuery2.ExecSQL;
думаю разницы между параметрезированными запросами не будет? Кто как делает?
← →
Val © (2005-09-20 11:33) [1]я так не делаю.
← →
Sergey13 © (2005-09-20 11:35) [2]>думаю разницы между параметрезированными запросами не будет?
Будет. Т.е. результат будет одинаковый, но затраты сервера на их выполнение разные. Плюс параметры позволяют делать проще и надежнее работу с датами и строками со всякими там кавычками и т.п. внутри.
← →
Os © (2005-09-20 11:41) [3]Будут глюки со строками как минимум. Например строка: hi"
Параметры надежней
← →
ANB © (2005-09-20 12:02) [4]Параметры надежнее и удобнее.
← →
Tab (2005-09-20 12:24) [5]ok, с этим понятно значит тогда получается так,
объявляю такого типа переменную:
const
QGetStudID =
"SELECT STUD.ID, STUD.ST_MDL_ID FROM STUD WHERE ((STUD.ST_FIO = :ST_FIO ))";
объявлять можно в каждом отдельно или лучше общем (в том же datamodule?)
← →
Sergey13 © (2005-09-20 12:28) [6]2[5] Tab (20.09.05 12:24)
Белиберда какая то, ИМХО.
← →
Tab (2005-09-20 17:38) [7]ну т.е. объявляю константу строковую, потом просто
sql.add(str_const);
и потом параметры заносить. так?
← →
ANB © (2005-09-20 19:24) [8]Совет : не мучай add, нарвешься на ошибку. Есть sql.text. Вот и засовывай туда запрос.
← →
Tab (2005-09-20 19:38) [9]всем спасибо за ответы
← →
Sergey13 © (2005-09-21 09:19) [10]2[7] Tab (20.09.05 17:38)
А нафига вообще константа какая то? Кинь на форму (или, что правильнее, в датамодуль) кверик, пропиши ему запрос и определи параметры. Перед выполнением присвой параметрам значения.
← →
evvcom © (2005-09-21 09:24) [11]
> Dm.IBQuery2.Close;
> ...
> Dm.IBQuery2.ExecSQL;
Это очень интересное решение. :)
Почему народ так тянется к динамически создаваемым запросам? Типа экономия ресурсов? Да на коде в этом случае больше потеряешь.
← →
Tab (2005-09-21 10:21) [12]т.е. для каждой формы, кидать в datamodule query и работать только с ним?
просто видел как то программу где в этом datamodule штук 50-60 ibquery, не понравилось, почему не знаю.
← →
Sergey13 © (2005-09-21 10:27) [13]2[12] Tab (21.09.05 10:21)
Зато тебе наверное понравится прога, где с одним квериком работают в 100-150 местах кода этой проги полностью переписывая его свойства. 8-)
← →
evvcom © (2005-09-21 14:14) [14]
> т.е. для каждой формы, кидать в datamodule query
У меня каждая форма работает с одним двумя DataSet-ами, поэтому я их кидаю прямо на форму, а не в Датамодуль.
> и работать только с ним?
Да, работать только с ним.
← →
Tab (2005-09-21 15:43) [15]
> Зато тебе наверное понравится прога, где с одним квериком
> работают в 100-150 местах кода этой проги полностью переписывая
> его свойства. 8-)
ну так там переписывать только sql :-), но все равно спасибо , наверное теперь пойду другим путем :-).
← →
Sergey13 © (2005-09-21 15:51) [16]2[15] Tab (21.09.05 15:43)
> ну так там переписывать только sql
Мало? А если SQL на полстраницы?
Или такой случай. В цикле вызывается запрос и иногда обработка уходит в другую процедуру, где этот же запрос переписывается. Что делать?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c