![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"правильное" выполнение запросов [D7, firebird 1.5]
Tab © (2005-09-20 11:30:00)В программе выполняются запросы, делаю следующим образом:
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;
думаю разницы между параметрезированными запросами не будет? Кто как делает?
Sergey13 (2005-09-21 15:51:00) [1]2[15] Tab (21.09.05 15:43)
> ну так там переписывать только sql
Мало? А если SQL на полстраницы?
Или такой случай. В цикле вызывается запрос и иногда обработка уходит в другую процедуру, где этот же запрос переписывается. Что делать?
Tab (2005-09-21 15:43:00) [2]
> Зато тебе наверное понравится прога, где с одним квериком
> работают в 100-150 местах кода этой проги полностью переписывая
> его свойства. 8-)
ну так там переписывать только sql :-), но все равно спасибо , наверное теперь пойду другим путем :-).
evvcom (2005-09-21 14:14:00) [3]
> т.е. для каждой формы, кидать в datamodule query
У меня каждая форма работает с одним двумя DataSet-ами, поэтому я их кидаю прямо на форму, а не в Датамодуль.
> и работать только с ним?
Да, работать только с ним.
Sergey13 (2005-09-21 10:27:00) [4]2[12] Tab (21.09.05 10:21)
Зато тебе наверное понравится прога, где с одним квериком работают в 100-150 местах кода этой проги полностью переписывая его свойства. 8-)
Tab (2005-09-21 10:21:00) [5]т.е. для каждой формы, кидать в datamodule query и работать только с ним?
просто видел как то программу где в этом datamodule штук 50-60 ibquery, не понравилось, почему не знаю.
evvcom (2005-09-21 09:24:00) [6]
> Dm.IBQuery2.Close;
> ...
> Dm.IBQuery2.ExecSQL;
Это очень интересное решение. :)
Почему народ так тянется к динамически создаваемым запросам? Типа экономия ресурсов? Да на коде в этом случае больше потеряешь.
Sergey13 (2005-09-21 09:19:00) [7]2[7] Tab (20.09.05 17:38)
А нафига вообще константа какая то? Кинь на форму (или, что правильнее, в датамодуль) кверик, пропиши ему запрос и определи параметры. Перед выполнением присвой параметрам значения.
Tab (2005-09-20 19:38:00) [8]всем спасибо за ответы
ANB (2005-09-20 19:24:00) [9]Совет : не мучай add, нарвешься на ошибку. Есть sql.text. Вот и засовывай туда запрос.
Tab (2005-09-20 17:38:00) [10]ну т.е. объявляю константу строковую, потом просто
sql.add(str_const);
и потом параметры заносить. так?
Sergey13 (2005-09-20 12:28:00) [11]2[5] Tab (20.09.05 12:24)
Белиберда какая то, ИМХО.
Tab (2005-09-20 12:24:00) [12]ok, с этим понятно значит тогда получается так,
объявляю такого типа переменную:
const
QGetStudID =
'SELECT STUD.ID, STUD.ST_MDL_ID FROM STUD WHERE ((STUD.ST_FIO = :ST_FIO ))';
объявлять можно в каждом отдельно или лучше общем (в том же datamodule?)
ANB (2005-09-20 12:02:00) [13]Параметры надежнее и удобнее.
Os (2005-09-20 11:41:00) [14]Будут глюки со строками как минимум. Например строка: hi'
Параметры надежней
Sergey13 (2005-09-20 11:35:00) [15]>думаю разницы между параметрезированными запросами не будет?
Будет. Т.е. результат будет одинаковый, но затраты сервера на их выполнение разные. Плюс параметры позволяют делать проще и надежнее работу с датами и строками со всякими там кавычками и т.п. внутри.
Val (2005-09-20 11:33:00) [16]я так не делаю.