§ 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;

  }

}

Работающее приложение: