
лаба 4
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное
учреждение высшего образования
«Юго-Западный государственный университет»
Лабораторная работа №4
По дисциплине: «Безопасность систем баз данных»
Тема: «Разработка клиентского интерфейса.»
Выполнил: Рохтин Я.А.
студент группы ИБ-21б
Проверил: Посканный М.В.
Ассистент
Курск, 2024
Цель работы
Получить доступ к данным СУБД, разработать клиентское приложение с удобным пользовательским интерфейсом, позволяющим осуществлять просмотр, выборку и изменение содержимого БД. Формирование отчетов средствами клиентского приложения
Ход работы
Перед началом выполнения лабораторной работы необходимо установить программное обеспечение Delphi 7 и дополнительный компонент ehlibrus, который обеспечит необходимые инструменты для работы с библиотеками. После завершения установки следует перейти в раздел "Инструменты" программы Delphi, открыть меню "Библиотека" и указать путь к папке с компонентом ehlibrus (Рис. 1), чтобы система могла корректно распознавать библиотеку. Затем требуется запустить файл библиотеки "DclEhLib70.dpk".
Рисунок 1 – выбор директории для установки EhLib.
После запуска "DclEhLib70.dpk" в открывшемся меню необходимо нажать на кнопку “Install” для окончательной установки и активации. (Рис. 2)
Рисунок 2 – установка EhLib в Delphi.
Если процесс установки прошел без ошибок, то в обозревателе компонентов появится ярлык “EhLib” с небольшим набором инструментов.
Запускаем Delphi и создаем новый проект. Для удобства возьмем компонент PageControl из вкладки Win32, с 3 страницами для каждой таблицы базы данных, которые можно добавить из контекстного меню (Рис. 3).
Рисунок 3 – процесс добавления страниц.
Перейдем к созданию модуля данных: во вкладке “Файл” найдем пункт “Модуль данных” и откроем его. Добавим компоненты: TDataSource (из вкладки Data Access), TADOConnection и TADOQuery (из вкладки ADO) на модуль данных (Рис. 4).
Рисунок 4 – добавление компонентов в модуль данных.
Связываем TADOQuery с TADOConnection в свойстве Connection, а TDataSource — с TADOQuery через свойство DataSet. (Рис. 5)
Рисунок 5 – создание связей компонентов.
TDataSource связывает сетку отображения с БД;
TADOConnection отвечает за подключение к БД;
TADOQuery — за получение данных.
Выделяем компонент TADOConnection, в свойстве ConnectionString нажимаем кнопку с «…». Нажимаем «Build», после чего появится окно «Свойство связи с данными». Выбираем провайдера Microsoft OLE DB Provider for SQL Server и нажимаем «Далее». (Рис. 6)
Рисунок 6 – выбор провайдера.
Во вкладке "Соединение" указываем имя сервера, имя пользователя, пароль от SQL Server Management Studio, и выбираем нашу БД. Нажимаем "Проверить подключение". Если все правильно, появится окно с успешной проверкой подключения. (Рис. 7).
Рисунок 7 – успешное соединение с БД.
В свойстве ACTIVE компонента TADOConnection устанавливаем значение True. После заходим в свойства TADOQuery, выбираем свойство SQL и нажимаем кнопку с «…». Вводим запрос: “select * from chitatel” для выборки всех столбцов таблицы chitatel базы данных. Затем устанавливаем свойство ACTIVE в положение True.
Теперь, когда установили контакт с сервером, переходим к созданию интерфейса: на активную страницу компонента PageControl добавляем компонент GroupBox из вкладки Standard и компонент PageControl. В Object Inspector указываем в поле Caption для GroupBox текст "Поиск", а для поля Align выбираем значения alTop.
Между компонентами GroupBox и PageControl добавляем компонент DBGridEh из вкладки EhLib. В DBGridEh для поля Align указываем alClient.
Заполним GroupBox "Поиск", добавив компоненты ComboBox, Edit и Button (из Standard). Кнопке дадим название "Искать", текст в Edit очистим. Также добавим новые листы на компонент PageControl: добавить/изменить, удалить, сортировка, печать. В итоге получаем макет из добавленных компонентов. (Рис. 8)
Рисунок 8 – готовый макет из добавленных компонентов.
Данная последовательность шагов повторяется для всех таблиц, которые необходимо отобразить в клиентском приложении.
Из вкладки EhLib помещаем следующие компоненты:
PrintDBGridEh — компонент для печати содержимого DBGridEh. В параметре DBGridEh компонента PrintDBGridEh выбираем необходимый нам DBGridEh.
Затем связываем нашу базу данных с DBGridEh: в параметре DataSource компоненты DBGridEh выбираем нужный DataSource, но перед этим в файле Unit1.pas в разделе uses прописываем Unit2. Если все предыдущие шаги были выполнены верно, то в итоге увидим отображение таблицы нашей БД. (Рис. 9)
Рисунок 9 – связь БД с DBGridEh.
Отредактируем отображение. Выполним двойной клик на компоненте DBGridEh, после чего откроется окно Editing DBGridEh1.Columns. В нем откроем опцию “Add all fields”.
В окне Editing DBGridEh1.Columns мы видим поля таблицы, которые можно редактировать в инспекторе объектов. Мы можем изменить параметры полей, такие как Title.Caption (заголовок поля), Visible (показывать/не показывать поле) и Width (ширина поля). Настроив эти параметры, мы приведем DBGridEh в оформленный вид, что улучшит восприятие. (Рис. 10)
Рисунок 10 – улучшенный вид интерфейса.
Проделаем предыдущие шаги для отображения остальных таблиц нашей базы данных.
Настроим поиск по таблице базы данных. Для этого добавляем в ComboBox1.Items необходимые поля таблицы, которые будем использовать для поиска: ФИО читателя, адрес, дата рождения, пол, место работы. Пропишем в кнопку “Искать” предложенный код, необходимый для обработки нажатия. Данный код описывает процедуру поиска по всей таблице и по каждому полю. Аналогично для остальных таблиц БД.
Перейдем к процедуре добавления данных в базу. Для этого на листе "Добавить/Изменить" добавим 5 DBEditEh из вкладки EhLib и 5 Label из вкладки Standard, а также одну кнопку Button. (Рис.11) Эти элементы будут использоваться для ввода новых данных и их сохранения в базе данных.
Рисунок 11 – добавленные компоненты ввода данных.
Далее, в свойствах DBEditEh1 устанавливаем DataSource как DataModule2.chitatelDataSource, а в поле DataField выбираем ФИО читателя. Аналогичную операцию выполняем для остальных DBEditEh, оставляя то же значение DataSource, но устанавливая соответствующие значения в поле DataField для каждого элемента. Таким образом, каждый элемент будет связан с конкретным полем таблицы базы данных. (Рис. 12)
Рисунок 12 – сопоставление поля DataField с полями таблицы.
Далее открываем SQL и выбираем опцию "Создать запрос". В открывшемся окне вписываем предложенный SQL-код для создания процедуры. Эта процедура будет использоваться для выполнения операций с базой данных, что упростит код в Delphi. Если не было обнаружено ошибок, то нам выведется сообщение об успешном выполнении команд. (Рис. 13)
Рисунок 13 – успешное выполнение команд.
Переходим обратно в Delphi. Открываем DataModule и переходим во вкладки: Вид, Формы, DataModule2.
Добавляем на DataModule компонент TADOQuery, переименовываем его в HelpQuery. В свойстве Connection указываем ADOConnection1, в SQL вводим запрос (SELECT * FROM chitatel). Устанавливаем ACTIVE в положение TRUE. (Рис. 14)
Рисунок 14 – настройка созданного HelpQuery.
Перейдем к кнопке Добавить из вкладки “Добавить/Изменить”. В процедуру обработки нажатия вставим предложенный код.
Для изменения записей таблицы нужную выбрать строку. Значения столбцов отобразятся в компонентах DBEditEh. Введем новые значения, и они обновятся при нажатии на любую часть формы.
Создадим процедуру удаления: на листе "Удалить" в компоненте PageControl добавим кнопку и DBComboBoxEh из вкладки ADO. Устанавливаем для DBComboBoxEh свойства: DataSource — DataModule2.chitatelDataSource и DataField — ФИО читателя. Также необходимо создать дополнительную форму для подтверждения удаления. (Рис. 15)
Рисунок 15 – форма удаления элемента таблицы.
Прописываем необходимый код для каждой кнопки: да, нет, удалить. (Рис. 16) В итоге получаем рабочую систему удаления данных.
Рисунок 16 – код удаления для кнопки “Да”.
Перейдем к реализации процедуры сортировки. Сделаем сортировку по ФИО читателя. На листе "Сортировка" добавим компонент DBCheckBoxEh из вкладки Ehlib. В его свойствах DataSource и DataField устанавливаем значения DataModule2.chitatelDataSource и ФИО читателя соответственно. Меняем свойство Caption для отображения нужной подписи.
Создадим процедуру обработки нажатия по DBCheckBoxEh, добавим необходимый код. (Рис. 17)
Рисунок 17 – код для обработки нажатия по CheckBoxEh.
Опишем процесс вывода результата запроса из базы данных на принтер, при помощи компонента PrintDBGridEh. В его параметрах уже стоит нужный нам DBGridEh. Создадим процедуру для кнопки “Распечатать”, вставив туда предложенный код. Если все прошло успешно и ошибок не было обнаружено, то “запустим” наш шаблон и проверим кнопку “Распечатать”. (Рис. 18)
Рисунок 18 – результат работы кода кнопки “Распечатать”.
Приступим к созданию произвольных запросов. Открываем DataModule2, помещаем туда 2 вспомогательных компонента: ADOQuery1 и DataSource1. Для каждого из них выбираем настройки: для ADOQuery1 – в свойстве Connection ставим ADOConnection1, в свойстве SQL пишем любой запрос (select * from chitatel), также ставим значение ACTIVE – True. Для DataSource1 выставляем свойство DataSet – ADOQuery1 (Рис. 19)
Рисунок 19 – параметры ADOQuery1.
Переходим к главному PageControl. Создаем новый лист "Произвольная таблица". Добавляем GroupBox с заголовком "Произвольный запрос". В GroupBox добавляем “Memo” с параметром ScrollBars = ssVertical. Размещаем две кнопки: "OK" и "РАСПЕЧАТАТЬ". Добавляем DBGridEh (свойства: DataSource = DataModule2.DataSource1, Align = alClient). На форму добавляем PrintDBGridEh и связываем с DBGridEh. (Рис. 20)
Рисунок 20 – добавленные элементы на листе “Произвольная таблица”
Добавим предложенный код для кнопки “Распечатать” и кнопки “ОК”. Эта процедура позволяет вводить произвольный SQL-запрос в Memo, результат которого отобразится на листе "Произвольная таблица" в PageControl.
Таким образом, база данных SQL была успешно подключена к Delphi 7 с помощью компонентов ADO, что позволяет взаимодействовать с базой данных напрямую из приложения.
Для автоматического открытия окна "Свойство связи с данными" при запуске приложения в Delphi, нужно использовать компонент ADOConnection. Для этого в коде приложения при запуске можно вызвать метод ConnectionString с настройками подключения. Окно "Свойства связи с данными" откроется, где пользователь сможет выбрать провайдера (Microsoft OLE DB Provider for SQL Server), указать имя сервера, имя пользователя, пароль и выбрать базу данных.
Откроем DataModule2 и выберем ADOConnection для которого в настройках событий запишем процедуру обработки OnWillConnect. (Рис. 21)
Рисунок 21 – код для события компонента ADOConnection1.
Данная настройка позволяет упростить процесс настройки соединения с базой данных SQL Server прямо в Delphi.
Заключение
В ходе выполнения лабораторной работы была разработана клиентская программа для взаимодействия с базой данных с использованием среды разработки Delphi и СУБД SQL Server. В процессе разработки получили поверхностные знания о работе с основными компонентами Delphi, такими как ADOQuery, DataSource, DBGridEh, и познакомились с принципами их интеграции для полноценного взаимодействия с базой данных.
Изучили процесс проектирования пользовательского интерфейса и научились связывать интерфейсные элементы с базой данных для выполнения операций по просмотру, выборке и изменению данных. Кроме того, реализовали возможность ввода произвольных SQL-запросов и отображения их результатов через компонент Memo, что добавило гибкости в работу с базой данных.
Познакомились с процессом подключения клиентского приложения к базе данных через Microsoft OLE DB Provider для SQL Server, что позволило обеспечить надежное и стабильное соединение с сервером базы данных. Важной частью работы стало автоматизирование выбора параметров подключения при запуске программы, что облегчило работу с базой данных.
Таким образом, в результате выполнения работы получили практические навыки по проектированию клиентских приложений для работы с базой данных, научились осуществлять операции по выборке, изменению и управлению данными, а также разработали функциональные инструменты для создания отчетов. Это позволило создать удобное и интуитивно понятное приложение, которое эффективно взаимодействует с базой данных SQL Server.