Разработка клиент-серверной части - Разработка и тестирование автоматизированной системы контроля успеваемости студентов

Разработка клиент-серверной части проекта, то есть связь между клиентским приложением и базой данных, реализуется при помощи специальной библиотеки MySQL для C#, свободно распространяемой на сайте MySQL. В структуре клиентского приложения (рис. 4) представлена часть этой библиотеки, а именно "MySQL. Data" в папке "Ссылки". Остальные части библиотеки не являются необходимыми для работы.

схема связей между классами

Рис. 5. Схема связей между классами

Для работы с базой данных необходимо использовать поставщик данных, который обеспечивает подключение, позволяет выполнять SQL запросы и получать результаты. Для подключения необходимо знать ip адреса сервера, имя базы данных, которая используется системой, имя пользователя и его пароль, номер порта. Вся эта информация хранится в специальном xml-файле с типом расширения. config, что позволяет быстро изменять параметры подключения, а не искать по всему коду очередное поле, которое нужно изменить. В данный момент этот файл выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<connectionStrings>

<add name="MySQLConStr"

connectionString="Server=localhost;

Database=sysmp;

Uid=root;

Password=********;

Port=3306;

SslMode=Preferred;"

providerName="MySql. Data. MySqlClient"/>

</connectionStrings>

</configuration>

В самом коде связь между окном отображения информации DataGridView и базой данной осуществляется через класс DataTable. DataGridVies - это визуализированная таблица, которая позволяет отображать данные в различных форматах и хранить названия столбцов. DataTable - это внутренняя таблица хранения данных, схожая с DataGridView, но не представляющая пользовательский интерфейс для отображения информации. Создается функция, которая возвращает объект типа DataTable, а на входе всегда получает тип ConnectionStringSettings, содержащий информацию о конфигурационном файле с информацией о подключении к базе данных. Внутри функции находится строка с SQL запросом. Пример SQL запроса на выборку данных:

String queryString = @"SELECT studId as 'ID',

surname as 'Фамилия',

name as 'Имя',

midname as 'Отчество'

FROM students";

С помощью строки MySqlConnection con = new MySqlConnection(conString. ConnectionString) происходит подключение к базе данных. Далее создается связь между объектом типа MySqlCommand и строкой SQL запроса с указанием на нужное соединение, таким образом создается команда запроса к базе данных. Далее открывается соединение с базой по команде con. Open() и запускается режим запроса, в ходе которого вся информация, полученная в ходе SQL запроса, загружается в объект типа DataTable, который и является результатом функции. После получения результатов соединение закрывается. В дальнейшем форма DataGridView в свое свойство DataSource получает результат описанной ранее функции. Таким образом создается связь между окном отображения и объектом DataTable.

Для случая записи в базу данных необходимо извлечь из окна отображения через свойство DataSource таблицу данных, и после этого при помощи функции записи изменить таблицу. В функции происходят почти те же действия, что и при считывании, однако есть принципиальные различия. Первое - это формирование запроса на обновление. Поскольку чаще всего необходимо будет проставлять оценки, то будет использоваться SQL запрос на обновление информации, уникальный для каждого студента. Поэтому используется цикл для прохождения всех студентов. Запрос в таком случае будет выглядеть примерно следующим образом:

QueryString = @"UPDATE grades

SET grade = " + kostil + @"

WHERE studID = " + dt. Rows[i]["ID"] +

@" and lesID=" + idLes;

В этом коде переменная kostil содержит в себе оценку, idLes - номер идентификатора занятия, а dt. Rows[i]["ID"] содержит идентификатор студента.

Рассмотренные SQL запросы на получение информации из базы данных и ее обновления являются стандартными в разработанной системе, а потому все похожие представлять нет необходимости.

Похожие статьи




Разработка клиент-серверной части - Разработка и тестирование автоматизированной системы контроля успеваемости студентов

Предыдущая | Следующая