![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа №6. Доступ к данным с помощью технологии ado.Net
- •1. Цель работы
- •2. Сведения из теории
- •2.1. Типы пространства имен System.Data
- •2.5. Возможности класса DataSet
- •2.6. Класс DataRelation
- •3. Пример выполнения работы
- •3.1. Визуальное проектирование диалогового окна
- •3.2. Проектирование программного кода
- •3.2.1. Обновление содержимого главного окна приложения
- •3.2.2. Добавление нового контакта
- •3.2.3. Добавление номера телефона
- •3.2.4. Выбор записей в таблицах
- •3.2.5. Редактирование записей таблицы Contacts
- •3.2.6. Изменение номера телефона
- •3.2.7. Удаление записей таблицы Contacts
- •If (MessageBox.Show("Вы действительно хотите удалить
- •3.2.8. Удаление номера телефона
- •If (MessageBox.Show("Вы действительно хотите удалить
- •3.2.9. Фильтрация данных
- •4. Задание для самостоятельной работы
3.2.2. Добавление нового контакта
Добавление нового контакта происходит тогда, когда пользователь щелкает кнопку Добавить, расположенную в верхней части главного окна приложения (рис. 8.3). Предварительно пользователь должен ввести имя и фамилию человека в поля Имя и Фамилия соответственно.
Для этой кнопки необходимо подготовить следующий программный код:
private void AddContactButton_Click(object sender, EventArgs e)
{
//если текстовые поля не пусты,
if (FamTextBox.Text != "" && NameTextBox.Text != "")
{
//то создать новую запись в таблице Contacts,
DataRow row = dataSet11.Contacts.NewRow();
//заполнить ее столбцы
row["Fam"] = FamTextBox.Text;
row["Name"] = NameTextBox.Text;
//и добавить запись в таблицу
dataSet11.Contacts.Rows.Add(row);
//обновить содержимое главного окна
UpdateContacts();
}
}
Здесь нужно убедиться в том, что пользователь ввел как имя, так и фамилию. Если поле fnTextBox или lnTextBox пустое, обработчик события завершает свою работу без выполнения других дополнительных действий. В том случае, когда пользователь ввел все необходимые данные, обработчик события создает новую строку в таблице Contacts. Для этого используется метод NewRow(). На следующем этапе введенные строки имени и фамилии записываются в соответствующие столбцы строки. Подготовленная таким способом строка добавляется в таблицу.
Далее обработчик события последовательно вызывает метод с именами UpdateContacts(), который предназначен для обновления содержимого формы приложения. Этот метод описан далее.
3.2.3. Добавление номера телефона
Выделив в верхнем списке имя человека, пользователь может добавить для него один или несколько телефонов. Эта операция выполняется при помощи кнопки Добавить, расположенной возле списка телефонов. Вот обработчик событий для этой кнопки:
private void AddPhoneButton_Click(object sender, EventArgs e)
{
//если поле ввода телефона не пустое
//и выбрана какая-либо фамилия
if (PhoneTextBox.Text != "" && FamComboBox.Text != "")
{
try
{
//создать новую запись таблицы Phones
DataRow row = dataSet11.Phones.NewRow();
//заполнить столбец "номер телефона"
row["Phone"] = PhoneTextBox.Text;
//получить из выпадающего списка фамилию,
//для которой добавляется телефон
string fio = FamComboBox.SelectedItem.ToString();
//составить условие для поиска этого человека
//в таблице Contacts
string str = "Fam='" + fio + "'";
//получить id этого человека в таблице Contacts
DataRow[] contacts = dataSet11.Contacts.Select(str);
//заполнить столбец "ContactId" добавляемой записи
row["ContactId"] = contacts[0]["id"];
//добавить запись в таблицу
dataSet11.Phones.Rows.Add(row);
//обновить форму
UpdateContacts();
}
catch (Exception)
{
}
}
}
Здесь вначале проверяется, что поле нового телефона phoneTextBox не пустоеи в выпадающем списке выбран человек, для которого будет добавляться телефон. Если это так, то путем вызова метода NewRow() в таблице Phones создается новая строка как объект класса DataRow.
Номер добавляемого телефона сохраняется в столбце Phone. Что же касается столбца ContactId, то в него нужно записать идентификатор строки таблицы Contacts (грубо говоря, порядковый номер человека, которому добавляется телефон). Для этого прежде всего нужно получить фамилию человека из списка FamComboBox с помощью свойства SelectedItem, затем найти этого человека по фамилии в таблице Contacts и получить его id. Поиск данных в таблице осуществляется с помощью метода Select(), где в качестве параметра выступает условие отбора данных. Это условие записывается в строку str и имеет вид: Fam = ‘<фамилия человека>’. Столбец ContactId новой записи заполняется найденным значением.
Заполненная строка добавляется в таблицу Phones методом Add().
И, наконец, после добавления строки обработчик событий обновляет содержимое базы данных в окне программы методом UpdateContacts().