![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
нужен ли try..exept
AlphaHuman © (2012-11-05 16:36:00)Часто в исходниках в инете стал встречать такого плана код:
Query.SQL.Text := 'SELECT * FROM items WHERE ctg_id=:ctg_id';
try
Query.ParamByName('ctg_id').AsInteger = 1;
except
Query.Params.CreateParam(ftInteger, 'ctg_id').AsInteger := 1;
end;
Сомневаюсь, что здесь так уж нужен try..exept. Хотелось бы услышать ваше мнение.
DVM (2012-11-05 18:37:00) [41]
> AlphaHuman (05.11.12 18:19) [9]
> Нужен ли передавать ParentId в SQL через параметр или можно
> через спецификатор вывода (%d)?
в данном случае все равно, т.к параметр у тебя число, в общем же случае через параметры будет удобнее. И исключения не надо давить.
AlphaHuman (2012-11-05 18:19:00) [42]Внутри метода создается объект типа TQuery, который должен возвращать записи у которых поле parent_id равно переданному значению:
Нужен ли передавать ParentId в SQL через параметр или можно через спецификатор вывода (%d)?
Вообщем в обоих случаях все работает как и задумывалось, хочу только для себя прояснить про параметр как будет правильнее
RWolf (2012-11-05 18:15:00) [43][4]
для производительности нужно первым делом выкинуть звёздочку из запроса.
sniknik (2012-11-05 18:13:00) [44]производительность на в определенном вызове одной функции... она в алгоритме, совокупности функций, чем меньше лишний действий, и больше функциональность подходит к требуемому (не нужно преобразований) тем производительней.
sniknik (2012-11-05 18:09:00) [45]> будут существенные отличия в производительности?
> оторванное от контекста ... бред это, в любом случае.
sniknik (2012-11-05 18:08:00) [46]> Хотелось бы услышать ваше мнение.
оторванное от контекста выглядит бессмысленно... хотя можно предположить что Query передается извне. например в dll, и это "защита" от не установленного значения для парсера на предмет параметров... ну, т.е. вместо того чтобы проверить признак, тупо присваиваем, и если ошибка то считаем параметр не создан, создаем...
только прикол в том, что для подобного создания параметр нужно определить особо(в ADO так)... ну может в BDE сработает.
неважно, бред это, в любом случае.
AlphaHuman (2012-11-05 18:06:00) [47]А если так написать:
Query.SQL.Text := Format('SELECT * FROM items WHERE ctg_id=%d', [ctg_id]);
будут существенные отличия в производительности?
sniknik (2012-11-05 18:00:00) [48]> не нужен, как и строка ...
как и сам параметр. в данном контексте он не выполняет ни одной функции для которой предназначен.
DVM (2012-11-05 17:23:00) [49]
> Хотелось бы услышать ваше мнение.
не нужен, как и строка Query.Params.CreateParam(ftInteger, 'ctg_id').AsInteger := 1;
kilkennycat (2012-11-05 17:16:00) [50]в таком варианте я тож сомневаюсь. если считать, что все так плохо c ParamByName, то надо идти до конца:
try
Query.ParamByName('ctg_id').AsInteger = 1;
except
try
Query.Params.CreateParam(ftInteger, 'ctg_id').AsInteger := 1;
except
showmessage("фигня какая-то")ж
end;
end;