В самостоятельной работе 8 написано: "В пункте "Server name" задаем имя сервера, которое необходимо узнать у преподавателя". Где узнать это имя? |
Подготовка ADO.NET к работе в приложении
Информация о базе данных
Разрабатываемое приложение предназначено для работы с базой данных сотрудников компании. На рисунке 8.4 представлена структура базы данных.
База данных включает две таблицы:
- сведения о сотрудниках - Employee ;
- справочник должностей - JobTitle.
Назначение атрибутов таблицы Employee приведены в таблице 8.4
Имя атрибута | Назначение | Тип |
---|---|---|
EmployeeID | Суррогатный ключ | smallint |
JobRoleID | Внешний ключ | smallint |
EmployeeSurname | Фамилия | varchar(50) |
EmployeeName | Имя | varchar(20) |
EmployeePatronymic | Отчество | varchar(20) |
EmployeeStatus | Статус | int |
Access | Уровень доступа | varchar(20) |
NetName | Сетевое имя | varchar(20) |
Birthday | Дата рождения | Smalldatetime |
FirstDate | Дата приема на работу | smalldatetime |
Суррогатный ключ EmployeeID, как и все остальные суррогатные ключи базы данных, генерируется сервером базы данных автоматически, т.е. для него задано свойство IDENTITY для СУБД MS SQL Server или AutoNumber для MS Access. Атрибут JobRoleID является внешним ключом, с помощью которого осуществляется связь с таблицей JobTitle.
Назначение атрибутов таблицы JobTitle приведено в таблице 8.3.
Имя атрибута | Назначение | Тип |
---|---|---|
JobRoleID | Суррогатный ключ | smallint |
JobRoleName | Наименование должности | varchar(50) |
В рассматриваемом приложении в качестве СУБД используется MS SQL Server 2005. Создаем соединение проекта с базой данных. Для этого выбираем пункт меню Tools/Connect to Database. Появляется окно AddConnection (рисунок 8.5)
В пункте "Server name" задаем имя сервера, которое необходимо узнать у преподавателя (на рисунке 8.5 MYHOME-8834E210\DOLJENKO ). В пункте Select or enter database name - имя базы данных, которое определит преподаватель (на рисунке 8.5 - Employee ).
Для проверки правильности подключения к базе данных нажимаем клавишу "Test Connection". При правильном подключении появляется следующее сообщение (рисунок 8.6).
При нормальном соединении с базой данных можно открыть навигатор Server Explorer из меню View/ Server Explorer или сочетанием клавиш ALT+CTRL+S (рисунок 8.7).
Добавим в проект объект класса DataSet. Для этого выберем пункт меню Project/Add New Item. . . (рисунок 8.8).
В окне Add New Item (рисунок 8.9) выберем шаблон DataSet и присвоим ему имя DataSetEmployee.
После нажатия кнопки Add система генерирует класс DataSetEmployee, который добавляется в решение проекта (рисунок 8.10).
Для добавления таблиц Employee и JobTitle к DataSet необходимо перетащить их из окна Server Explorer на поле графического дизайнера (рисунок 8.11).
В результате будут созданы классы таблиц, адаптеры и методы Fill и GetData.
При формировании класса DataSetEmployee необходимо учесть то, что первичные ключи таблиц Employee и JobTitle являются суррогатными и автоматически формируются (ключ со свойством автоинкремент) источником данных (например, MS SQL Server ). При формировании новых записей в приложении необходимо обеспечить уникальность первичных ключей для таблиц объекта DataSetEmployee. Это можно обеспечить, задав для ключевых колонок таблиц Employee и JobTitle следующие свойства:
AutoIncrement = true; AutoIncrementSeed = -1; AutoIncrementStep = -1;
Столбец со свойством AutoIncrement равным true генерирует последовательность значений, начинающуюся со значения AutoIncrementSeed и имеющую шаг AutoIncrementStep. Это позволяет генерировать уникальные значения целочисленного столбца первичного ключа. В этом случае при добавлении новой записи в таблицу будет генерироваться новое значение первичного ключа, начиная с -1, -2, -3 и т.д., которое никогда не совпадет с первичным ключом источника данных, т.к. в базе данных генерируются положительные первичные ключи. Свойства AutoIncrementSeed и AutoIncrementStep устанавливаются равными -1, чтобы гарантировать, что когда набор данных будет синхронизироваться с источником данных, эти значения не будут конфликтовать со значениями первичного ключа в источнике данных. При синхронизации DataSet с источником данных, когда добавляют новую строку в таблицу MS SQL Server 2005 с первичным автоинкрементным ключом, значение, которое этот ключ имел в таблице DataSet, заменяется значением, сгенерированным СУБД.
Установка свойств AutoIncrement, AutoIncrementSeed и AutoIncrementStep для колонки первичного ключа EmployeeID таблицы Employee приведена на рисунке 8.12.
Аналогичные установки свойств AutoIncrement, AutoIncrementSeed и AutoIncrementStep необходимо сделать и для колонки JobTitleID таблицы JobTitle.
После создания класса DataSetEmployee и адаптера необходимо создать объекты этих классов, добавив следующий код к файлу FormEmployee.cs.
DataSetEmployee dsEmployee = new DataSetEmployee(); DataSetEmployeeTableAdapters.EmployeeTableAdapter daEmployee = new Project_К4И_01.DataSetEmployeeTableAdapters. EmployeeTableAdapter(); DataSetEmployeeTableAdapters.JobTitleTableAdapter daJobTitle = new Project_К4И_01.DataSetEmployeeTableAdapters. JobTitleTableAdapter();
После того, как созданы объекты адаптеров данных daEmployee и daJobTitle, а также объект класса DataSetEmployee - dsEmployee необходимо создать метод для заполнения объекта dsEmployee из базы данных (в рассматриваемом примере база данных Employee, созданная в СУБД MS SQL Server 2005 ). Для заполнения данными dsEmployee из базы данных Employee создадим метод EmployeeFill( ):
public void EmployeeFill() { daJobTitle.Fill(dsEmployee.JobTitle); daEmployee.Fill(dsEmployee.Employee); MessageBox.Show("Метод Fill отработал");}
В методе EmployeeFill( ) для объектов класса DataAdapter применяется метод Fill, который производит заполнение таблиц ( JobTitle и Employee ) объекта dsEmployee данными из базы данных. Метод Fill адаптера данных DataAdapter требует указания в качестве параметров задания соответствующей таблицы DataSet, то есть dsEmployee.JobTitle и dsEmployee.Employee.
Метод MessageBox.Show введен в метод EmployeeFill для первоначального тестирования, после которого его нужно убрать.
Вызов метода EmployeeFill необходимо добавить в обработчик события Load для формы FormEmployee, возникающего при нажатии на пункт меню "Сотрудник".
Задание на лабораторную работу
- Изучите теоретический материал.
- Создайте класс DataSetEmployee.
- Для разрабатываемого приложения создайте объекты dsEmployee, daJobTitle и daEmployee.
- Проведите компиляцию проекта и убедитесь в отсутствии ошибок трансляции.
- Разработайте метод Fill для заполнение таблиц DataSet.
- Протестировать работу приложения.