§ 19. Кампаненты для работы з базамі даных

19.3. Пабудова запытаў на мове SQL

Пры рэалізацыі праектаў па апрацоўцы БД на форме з'яўляецца вялікая колькасць невізуальных кампанентаў. Для таго каб яны не запаўнялі форму, можна выкарыстоўваць модуль DataModule (прыклад 19.14). Пасля гэтага дадаецца невізуальны модуль Unit2, на якім можна размяшчаць невізуальныя кампаненты (прыклад 19.15). Для таго каб кампаненты былі даступныя модулю Unit1, неабходна яго падключыць:

#include "Unit2.h"

Аналагічна трэба падключыць модуль Unit1 у модулі Unit2.

Базы даных пры выкананні запытаў выкарыстоўваюць мову SQL. Кампанент, які дазваляе выкарыстоўваць запыты на мове SQL, —  ADOQuery. Праца кампанента і настройка аналагічныя кампаненту ADOTable.

Для адлюстравання ўсёй табліцы ва ўласцівасці SQL кампанента павінен быць прапісаны запыт:

Select * From <імя табліцы БД>

Для выканання запыту выкарыстоўваецца метад ExecSQL.

Прыклад 19.16. Стварыць праект, у якім неабходна рэалізаваць магчымасць выканання SQL запытаў да базы даных Country.mdb.

Этапы выканання задання

  1. Дадаць у праект модуль DataModule з кампанентамі ADOConnection, ADOQuery і DataSource. Наладзіць уласцівасці кампанентаў, як у прыкладзе 19.13.
  2. Дадаць на форму кампаненты DBGrid, Memo, Button.
  3. Ва ўласцівасці Active кампанента ADOQuery1 устанавіць значэнне true.
  4. Для адлюстравання ўсёй табліцы ва ўласцівасці SQL кампанента ADOQuery1 прапісаць запыт (прыклад 19.17):
    Select * From Государства
  5. Рэалізаваць магчымасць выканання запыту, запісанага ў Memo, па націску кнопкі (прыклад 19.18). Для гэтага неабходна тэкст з кампанента Мемо перадаць уласцівасці SQL кампанента ADOQuery1 і затым выканаць запыт.

Прыклад 19.14. Даданне модуля DataModule.

  1. Выканаць каманду File→New→Other…
  2. Выбраць С++Builder DataBase.
  3. Выбраць DataModule.
  4. Падключыць Unit1 да Unit2 і Unit2 да Unit1.

Прыклад 19.15. Размяшчэнне невізуальных кампанентаў:

Прыклад 19.16. Форма на этапе канструявання:

Прыклад 19.17. Рэдагаванне запыту для ўласцівасці SQL кампанента:

Прыклад 19.18. Апрацоўшчык падзеі OnClick для кнопкі.

void __fastcall TForm1::Button1Click
                (TObject *Sender)

{

  DataModule2->ADOQuery1->SQL->Clear();

  DataModule2->ADOQuery1->Active = false;

  if (Memo1->Lines->Count > 0) {

    DataModule2->ADOQuery1->SQL->

    AddStrings(Memo1->Lines);

    DataModule2->ADOQuery1->ExecSQL();

    DataModule2->ADOQuery1->Active = true;

  }

}

Дадатак у час працы: