Введение в язык SQL запросов к базам данных. Баканов В.М. - 52 стр.

UptoLike

Составители: 

- 52 -
чинающиеся с двоеточия формальные параметры, изменяемые во
время выполнения скомпилированного приложения);
динамическое задание SQL-запроса; в этом случае текст (строка) SQL-
запроса генерируется в RunTime и передается компоненту TQuery для
исполнения.
Простейшая схема использования возможностей компонента TQuery,
обеспечивающая функционирование SQL-запросов к БД приведен ниже (C-
текст дан применительно к системе C++Builder, предполагается, что текст
SQL-запроса вводится
пользователем в компонент Edit1):
void __fastcall TForm1::RunSQL(TObject *Sender)
{ // функция вызывается при нажатии
// на кнопку ‘RunSQL’ (‘Выполнить SQL’)
Query1->Close(); // закрыть БД
Query1->SQL->Clear(); // очистить буфер SQL-предписаний
Query1->SQL->Add(Edit1->Text); // копировать в буфер из Edit1
Query1->Open(); // заново открыть БД (c выполнением SQL)
} // конец функции RunSQL
Приближенный к практике Раsса1-текст (для Delphi) в этом случае будет
следующим (полагаем, что имя TQuery-компонента суть Query_l, a строки
SQL_string_l, SQL_string__2 и др. содержат ранее сгенерированные тексты
частей SQL-запроса - например, отдельно SELECT-часть, WHERE-часть и
др.):
.....
try { включить режим отслеживание исключительных ситуаций }
Screen.Cursor:=crSQLWait;{ форма курсора - песочные часы }
Query_1.Close;
Query_1.SQL.Clear; { очистить текст SQL-запроса }
Qnery_1.SQL.Add(SQL_string_1); { 1-я часть SQL-запроса }
Query_1.SQL.Add(SQL_string_2); { 2-я часть SQL-запроса }
{ и так далее - текст запроса может быть достаточно длинным... }
Query_1.Prepare; { ...часто повышает эффективность }
Query_1.Open; { выполнение SELECT - запроса}
Screen.Cursor:=crDefault; { форма курсора - по умолчанию }
except { ...какая-то ошибка при выполнении OPEN }
on E:EDatabaseError do
begin
if E.Message=LoadStr(SHandleError) then { ...это не SELECT !}
begin
Query1.ExecSQL; {
попытка выполнения не SELECT - запроса }
Screen.Cursor:=crDefault; { форма курсора - по умолчанию }
end
else
begin { ошибка выполнение не SELECT - запроса }
                                        - 52 -


   чинающиеся с двоеточия формальные параметры, изменяемые           во
   время выполнения скомпилированного приложения);
  • динамическое задание SQL-запроса; в этом случае текст (строка) SQL-
   запроса генерируется в RunTime и передается компоненту TQuery для
   исполнения.

   Простейшая схема использования возможностей компонента TQuery,
обеспечивающая функционирование SQL-запросов к БД приведен ниже (C-
текст дан применительно к системе C++Builder, предполагается, что текст
SQL-запроса вводится пользователем в компонент Edit1):

   void __fastcall TForm1::RunSQL(TObject *Sender)
   { // функция вызывается при нажатии
     // на кнопку ‘RunSQL’ (‘Выполнить SQL’)
     Query1->Close(); // закрыть БД
     Query1->SQL->Clear(); // очистить буфер SQL-предписаний
     Query1->SQL->Add(Edit1->Text); // копировать в буфер из Edit1
     Query1->Open(); // заново открыть БД (c выполнением SQL)
   } // конец функции RunSQL

   Приближенный к практике Раsса1-текст (для Delphi) в этом случае будет
следующим (полагаем, что имя TQuery-компонента суть Query_l, a строки
SQL_string_l, SQL_string__2 и др. содержат ранее сгенерированные тексты
частей SQL-запроса - например, отдельно SELECT-часть, WHERE-часть и
др.):

   .....
try { включить режим отслеживание исключительных ситуаций }
   Screen.Cursor:=crSQLWait;{ форма курсора - песочные часы }
   Query_1.Close;
   Query_1.SQL.Clear; { очистить текст SQL-запроса }
   Qnery_1.SQL.Add(SQL_string_1); { 1-я часть SQL-запроса }
   Query_1.SQL.Add(SQL_string_2); { 2-я часть SQL-запроса }
   { и так далее - текст запроса может быть достаточно длинным... }
   Query_1.Prepare; { ...часто повышает эффективность }
   Query_1.Open; { выполнение SELECT - запроса}
   Screen.Cursor:=crDefault; { форма курсора - по умолчанию }
except { ...какая-то ошибка при выполнении OPEN }
   on E:EDatabaseError do
   begin
   if E.Message=LoadStr(SHandleError) then { ...это не SELECT !}
   begin
     Query1.ExecSQL; { попытка выполнения не SELECT - запроса }
     Screen.Cursor:=crDefault; { форма курсора - по умолчанию }
   end
   else
   begin { ошибка выполнение не SELECT - запроса }