Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

нужен ли try..exept


Страницы:   1 2 3

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;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо