![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ребята сравните несколько запросов... [D6, XP]
Новинький © (2006-07-05 11:44:00)with<\B> ADOQuery1 do<\B>
try<\B>
if<\B> ADOQuery1 then<\B>
begin<\B>
Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
Open;
{ if Execute then
begin
on ??? do
First;
end; }
end;<\B>
finally<\B>
{ Free; }
end;<\B>
Может будет лутше и в чем отличие (что лутше а что хуже?)
with<\B> ADOQuery1 do<\B>
try<\B>
if<\B> ADOQuery1 then<\B> Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
Open;
{ if Execute then
begin
on ??? do
First;
end; }
finally<\B>
{ Free; }
end;<\B>
И нужно ли выгружать объект ADOQuery1 в финале обработки исключений? Задаю вопрос потому, что привыгрузке этого объекта я невижу результата!
Или лутше запрос:
with ADOQuery1 do
try
Active := false;
SQL.Text:='SQL- запрос';
ExecSQL;
except
on E:Exception do ShowMessage(E.Message);
end;
или лутше так:
with ADOQuery1 do
try
if Active then Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
и нужно ли ставить Open;
ExecSQL;
except
on E:Exception do ShowMessage(E.Message);
end;
evvcom (2006-07-05 13:49:00) [1]> Но лутше конечно с оброботкой исключений!
Чем это "лутше"?
> Но ведь оброботку исключения можно организовать по разному!
Можно. А она уже организована по дефолту.
> Какой "самый" правельный надёжный и производительный способ?
Самый производительный - это их не обрабатывать. Тогда кода будет минимум, соответственно время на доп.обработку тратиться не будет. Насчет остальных эпитетов только смайлик :)
Ega23 (2006-07-05 13:03:00) [2]Писать хранимые процедуры.
Плохиш (2006-07-05 13:01:00) [3]
> ЮЮ © (05.07.06 12:47) [9]
> Из своего предложил только
Он свой показывал в http://www.delphimaster.ru/cgi-bin/forum.pl?id=1152024016&n=18
Новинький (2006-07-05 12:53:00) [4]Select и т.д. и т.п. я это не имел ввиду!
Новинький (2006-07-05 12:52:00) [5]А каки именно! Ведь можно обойтись и без обработки исключений!
Но лутше конечно с оброботкой исключений!
Но ведь оброботку исключения можно организовать по разному! Какой "самый" правельный надёжный и производительный способ?
Как в "идеале" должен организовываться, запрос ?
Desdechado (2006-07-05 12:49:00) [6]Я пользуюсь компонентами dbExpress.
И обязательно параметрическими запросами.
ЮЮ (2006-07-05 12:47:00) [7]Из своего предложил только SQL.Text:= 'SQL- запрос';
а от нас хочет все возможные организации вопросов.
Прям Шпиён какой-то
Ega23 (2006-07-05 12:44:00) [8]
> Какими запросами пользуетесь вы? Если конечно не секрет!
>
> Я бы хотел увидеть все возможные организации вопросов.
Всеми, какие предоставляет T-SQL.
Новинький (2006-07-05 12:39:00) [9]Какими запросами пользуетесь вы? Если конечно не секрет!
Я бы хотел увидеть все возможные организации вопросов.
Новинький (2006-07-05 12:38:00) [10]
> if ADOQuery1 then
> Вот это вооще непоятно что за зверь.
Я ошибся, я имел ввиду:
if Active then Close;
Desdechado (2006-07-05 11:56:00) [11]Free нужно обычно в тех случаях, когда объект создается вручную, а не валяется на форме (там он сам разрушится вместе с формой).
Desdechado (2006-07-05 11:55:00) [12]
SQL.Clear;
SQL.Text:='SQL- запрос';
Здесь первая строка лишняя.
if ADOQuery1 then
Вот это вооще непоятно что за зверь.
SQL.Text:='SQL- запрос';
ExecSQL; // и нужно ли ставить Open;
ExecSQL для запросов типа INSERT, UPDATE, DELETE
Open - для SELECT
Новинький (2006-07-05 11:51:00) [13]with ADOQuery1 do
try
if ADOQuery1 then
begin
Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
Open;
{ if Execute then
begin
on ??? do
First;
end; }
end;
finally
{ Free; }
end;
Может будет лутше и в чем отличие (что лутше а что хуже?)
with ADOQuery1 do
try
if ADOQuery1 then Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
Open;
{ if Execute then
begin
on ??? do
First;
end; }
finally
{ Free; }
end;
И нужно ли выгружать объект ADOQuery1 в финале обработки исключений? Задаю вопрос потому, что привыгрузке этого объекта я невижу результата!
Или лутше запрос:
with ADOQuery1 do
try
Active := false;
SQL.Text:='SQL- запрос';
ExecSQL;
except
on E:Exception do ShowMessage(E.Message);
end;
или лутше так:
with ADOQuery1 do
try
if Active then Close;
SQL.Clear;
SQL.Text:='SQL- запрос';
и нужно ли ставить Open;
ExecSQL;
except
on E:Exception do ShowMessage(E.Message);
end;
Ega23 (2006-07-05 11:49:00) [14]Напиши вообще без тегов.
Новинький (2006-07-05 11:46:00) [15]Пордон теги не правильно закрыл!