011 – Delphi. Розробка програми формування SQL-запитів до таблиці бази даних.

Розробка програми формування SQL-запитів до таблиці бази даних

Описується процес створення додатку, що використовується для дослідження SQL-запитів до бази даних.

 

Умова задачі

Задано базу даних “01_02_00_011_mydb.mdb“, що містить три таблиці: Students, Marks, Groups.

Структура таблиць наступна.

Таблиця Students.

01_02_00_011_table01u

Таблиця Group.

01_02_00_011_table02u

Таблиця Marks (Оцінки).

01_02_00_011_table03u

Таблиці зв’язані між собою за такою схемою (рис. 1):

01_02_00_011_01_Рис. 1. Схема зв’язків між таблицями

Розробити додаток, що формуватиме SQL-запити до бази даних.

 

Хід роботи

  1. Завантажити Delphi.

Зберегти проект у довільній папці. Рекомендується скопіювати файл бази даних “01_02_00_011_mydb.mdb” у папку, в якій розміщуються робочі файли нашого проекту.

 

2.Побудова форми.

Спочатку потрібно збільшити розмір форми з допомогою “мишки”.

Розмістити на формі такі компоненти:

– з вкладки dbGo компонент TADOConnection (рис. 2);

– з вкладки dbGo компонент TADOQuery (рис. 2);

– з вкладки Standard компоненти типу TButton та TMemo (рис. 3);

– з вкладки Data Controls компонент типу TDBGrid (рис. 4);

– з вкладки Data Access компонент типу TDataSource (рис. 5).

01_02_00_011_02_Рис. 2. Компоненти TADOConnection та TADOQuery

 

01_02_00_011_03_Рис. 3. Компоненти типу TMemo та TButton

 

01_02_00_011_04_Рис. 4. Компонент типу TDBGrid

 

01_02_00_011_05_Рис. 5. Компонент типу TDataSource

У результаті виконаних дій, автоматично будуть створені змінні з такими іменами: ADOConnection1, ADOQuery1, Memo1, DBGrid1, DataSource1.

 

  1. Підключення бази даних до додатку.

Щоб підключити базу даних до додатку потрібно викликати команду “Edit ConnectionString” з контекстного меню, що викликається кліком правої кнопки мишки на компоненті ADOConnection1 (рис. 6). Процес підключення до бази даних складається з декількох кроків, представлений у вигляді майстра і детально описаний тут.

01_02_00_011_06_Рис. 6. Виклик майстра підключення до бази даних

Після підключення бази даних до додатку потрібно налаштувати властивості інших компонент, щоб отримати відображення бази даних

 

  1. Налаштування властивостей компонент.

З допомогою Object Inspector встановлюємо такі властивості компонент:

– у компоненті ADOConnection1 властивість “LoginPrompt” встановити в значення false (необхідно для уникнення запитів введення паролю під час доступу до бази даних);

– у компоненті Button1 властивість Caption встановити в значення “Execute query” (виконати запит);

– у компоненті ADOQuery1 властивість Connection встановити в значення ADOConnection1;

– у компоненті DataSource1 властивість DataSet встановити в значення ADOQuery1;

– у компоненті DBGrid1 властивість DataSource встановити в значення DataSource1.

Після налаштування властивостей компонент головна форма додатку матиме вигляд як показано на рисунку 7.

01_02_00_011_07_Рис. 7. Головна форма додатку після налаштування компонент

Тепер база даних підключена до додатку і можна створювати програмний код активізації форми та кліку на кнопці “Execute query“.

 

  1. Налаштування властивості SQL компонента ADOQuery1.

Для введення тексту SQL-запиту спочатку потрібно викликати редактор коду на мові SQL компонента ADOQuery1 (рис. 8).

01_02_00_011_08_Рис. 8. Властивість SQL компонента ADOQuery1

У результаті відкриється вікно редактора коду (рис. 9). У цьому вікні потрібно набрати такий текст:

SELECT *
FROM Student

01_02_00_011_09_Рис. 9. Вікно редактора коду на мові SQL

  1. Програмування події активізації основної форми OnActivate.

Програмуємо подію активізації форми додатку. Ця подія генерується однією з перших, тому тут потрібно вписати код, що робить початкову ініціалізацію компонент. Процес програмування події в Delphi детально описаний тут.

Виділяємо головну форму додатку і викликаємо подію OnActivate з вкладки Events в Object Inspector (рис. 8).

01_02_00_011_10_Рис. 10. Виклик події OnActivate

Лістинг події наступний.

procedure TForm1.FormActivate(Sender: TObject);
begin
  Memo1.Lines.Clear; // очистити текст в Memo1
  Memo1.Lines.Assign(ADOQuery1.SQL); // Призначити текст SQL-запиту з ADOQuery1 в Memo1
  ADOQuery1.Open; // Виконати SQL-запит
end;

 

  1. Програмування події закриття форми OnClose.

Подія OnClose форми викликається в момент її закриття. Тому, тут потрібно вписати код закриття з‘єднання з базою даних.

У подію закриття форми вносимо наступний текст.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if ADOQuery1.Active then ADOQuery1.Close;
end;

У цьому коді робиться перевірка на наявність відкриття набору даних, і якщо цей набір відкритий, то він закривається методом Close.

 

8. Програмування події OnClick компонента Button

Щоб дати команду на виконання SQL-запиту з Memo1, потрібно запрограмувати подію OnClick компонента Button1.

Лістинг процедури обробки події наведений нижче.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ADOQuery1.Active then ADOQuery1.Close; // чи закрите з’єднання?
  ADOQuery1.SQL.Clear; // очищення попереднього тексту SQL-запиту
  ADOQuery1.SQL.Assign(Memo1.Lines); // встановлення тексту нового SQL-запиту
  ADOQuery1.Open;   // виконання запиту
end;

 

  1. Запуск додатку на виконання.

Після виконаних дій, додаток можна запустити на виконання. Результат роботи додатку зображений на рисунку 11. Як видно з рисунку 11, відображаються усі поля з таблиці Student (рис. 11).

Текст SQL-запиту формується в компоненті Memo1, а результат його виконання відображається в компоненті DBGrid1.

01_02_00_011_11_Рис. 11. Результат виконання додатку

Створимо інший SQL-запит, який виводить студентів, що мають оцінку 4 з математики.

SELECT *
FROM   Student, Marks
WHERE ([Student.ID_Student]=Marks.ID_Student) and
      (Marks.Mathematics = 4)

Результат виконання додатку наведено на рисунку 12.

Рис. 12. Результат виконання додатку