Розробка програми формування SQL-запитів до таблиці бази даних
Описується процес створення додатку, що використовується для дослідження SQL-запитів до бази даних.
Умова задачі
Задано базу даних “01_02_00_011_mydb.mdb“, що містить три таблиці: Students, Marks, Groups.
Структура таблиць наступна.
Таблиця Students.
Таблиця Group.
Таблиця Marks (Оцінки).
Таблиці зв’язані між собою за такою схемою (рис. 1):
Рис. 1. Схема зв’язків між таблицями
Розробити додаток, що формуватиме SQL-запити до бази даних.
Хід роботи
Зберегти проект у довільній папці. Рекомендується скопіювати файл бази даних “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).
Рис. 2. Компоненти TADOConnection та TADOQuery
Рис. 3. Компоненти типу TMemo та TButton
Рис. 4. Компонент типу TDBGrid
Рис. 5. Компонент типу TDataSource
У результаті виконаних дій, автоматично будуть створені змінні з такими іменами: ADOConnection1, ADOQuery1, Memo1, DBGrid1, DataSource1.
- Підключення бази даних до додатку.
Щоб підключити базу даних до додатку потрібно викликати команду “Edit ConnectionString” з контекстного меню, що викликається кліком правої кнопки мишки на компоненті ADOConnection1 (рис. 6). Процес підключення до бази даних складається з декількох кроків, представлений у вигляді майстра і детально описаний тут.
Рис. 6. Виклик майстра підключення до бази даних
Після підключення бази даних до додатку потрібно налаштувати властивості інших компонент, щоб отримати відображення бази даних
- Налаштування властивостей компонент.
З допомогою Object Inspector встановлюємо такі властивості компонент:
– у компоненті ADOConnection1 властивість “LoginPrompt” встановити в значення false (необхідно для уникнення запитів введення паролю під час доступу до бази даних);
– у компоненті Button1 властивість Caption встановити в значення “Execute query” (виконати запит);
– у компоненті ADOQuery1 властивість Connection встановити в значення ADOConnection1;
– у компоненті DataSource1 властивість DataSet встановити в значення ADOQuery1;
– у компоненті DBGrid1 властивість DataSource встановити в значення DataSource1.
Після налаштування властивостей компонент головна форма додатку матиме вигляд як показано на рисунку 7.
Рис. 7. Головна форма додатку після налаштування компонент
Тепер база даних підключена до додатку і можна створювати програмний код активізації форми та кліку на кнопці “Execute query“.
- Налаштування властивості SQL компонента ADOQuery1.
Для введення тексту SQL-запиту спочатку потрібно викликати редактор коду на мові SQL компонента ADOQuery1 (рис. 8).
Рис. 8. Властивість SQL компонента ADOQuery1
У результаті відкриється вікно редактора коду (рис. 9). У цьому вікні потрібно набрати такий текст:
SELECT * FROM Student
Рис. 9. Вікно редактора коду на мові SQL
- Програмування події активізації основної форми OnActivate.
Програмуємо подію активізації форми додатку. Ця подія генерується однією з перших, тому тут потрібно вписати код, що робить початкову ініціалізацію компонент. Процес програмування події в Delphi детально описаний тут.
Виділяємо головну форму додатку і викликаємо подію OnActivate з вкладки Events в Object Inspector (рис. 8).
Рис. 10. Виклик події OnActivate
Лістинг події наступний.
procedure TForm1.FormActivate(Sender: TObject);
begin
Memo1.Lines.Clear; // очистити текст в Memo1
Memo1.Lines.Assign(ADOQuery1.SQL); // Призначити текст SQL-запиту з ADOQuery1 в Memo1
ADOQuery1.Open; // Виконати SQL-запит
end;
- Програмування події закриття форми 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;
- Запуск додатку на виконання.
Після виконаних дій, додаток можна запустити на виконання. Результат роботи додатку зображений на рисунку 11. Як видно з рисунку 11, відображаються усі поля з таблиці Student (рис. 11).
Текст SQL-запиту формується в компоненті Memo1, а результат його виконання відображається в компоненті DBGrid1.
Рис. 11. Результат виконання додатку
Створимо інший SQL-запит, який виводить студентів, що мають оцінку 4 з математики.
SELECT *
FROM Student, Marks
WHERE ([Student.ID_Student]=Marks.ID_Student) and
(Marks.Mathematics = 4)
Результат виконання додатку наведено на рисунку 12.
Рис. 12. Результат виконання додатку