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

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

Ребята сравните несколько запросов... [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]

Пордон теги не правильно закрыл!


Наверх

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