Редактирование данных в среде ADO.NET
Выполнение упражнения
- Добавьте в проект новую форму, выполнив команду меню оболочки Project/Add Windows Form
- Оставьте имя формы по умолчанию Form3
- Добавьте вверху исходного кода сгенерированного файла Form3.cs пространства имен в режиме View Code из библиотеки system.data.dll
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace DataEdit { public class Form3 : System.Windows.Forms.Form ................................................. }Листинг 9.18. Добавление пространства имен в файл Form3.cs для работы с базами данных
- Проверьте, что библиотека system.data.dll с нужными пространствами имен подключена к проекту
Если библиотека отсутствует в ссылках проекта, то подключите ее через контекстное меню узла References командой Add Reference
- В режиме Design поместите на форму из вкладки Windows Forms панели Toolbox элементы управления пользовательского интерфейса со значениями, указанными в таблице
- Расположите элементы управления пользовательского интерфейса так
- Через меню Format замкните элементы командой Lock Controls, чтобы случайно не изменить интерфейс
- Двойным щелчком на кнопке View создайте обработчик события Click и заполните его кодом, приведенным ниже.
В коде обработчика создается объект команды с учетом информации о конкретном соединении. В базу данных передается имя хранимой процедуры ( StoredProcedure ) с указанием типа команды как значения структуры System.Data.CommandType.StoredProcedure. Затем формируются параметры и создается объект типа System.Data.OleDb.OleDbDataReader. На последнем этапе выполняется обработка данных в цикле и размещение их в строках TextBox.
private void btnView_Click(object sender, System.EventArgs e) { // Создаем объект соединения с базой данных OleDbConnection ocnn = new OleDbConnection( this.BuildCnnStr("localhost", "Northwind")); // Создаем объект команд OleDbCommand ocmdCustHist = new OleDbCommand("CustOrderHist", ocnn); // Объявляем ссылку на будущий объект чтения данных OleDbDataReader odrCustHist; // Защищенный режим выполнения try { // Указать тип команды как "хранимая процедура" ocmdCustHist.CommandType = CommandType.StoredProcedure; // Задать параметры команды ocmdCustHist.Parameters.Add("@CustomerID", this.txtCustID.Text); // Открыть объект соединения ocnn.Open(); // Создать объект чтения данных odrCustHist = ocmdCustHist.ExecuteReader(CommandBehavior.SequentialAccess); // Обработать в цикле загруженные данные // и создать строку результатов this.txtResults.Clear(); while(odrCustHist.Read()) { this.txtResults.AppendText(odrCustHist.GetString(0) + ", " + odrCustHist.GetInt32(1).ToString() + "\r\n"); } } catch(System.Exception excpData) { MessageBox.Show("Произошла ошибка: " + excpData.Message); } } // Наша функция!!! // Формирует и возвращает строку параметров для создания // соединения поставщика с сервером и базой данных private string BuildCnnStr(string strServer, string strDatabase) { string strTemp = "Provider=SQLOleDB; Data Source=" + strServer + ";"; strTemp += "Initial Catalog=" + strDatabase + ";"; strTemp += "Integrated Security=SSPI"; return strTemp; }Листинг 9.19. Обработчик события Click кнопки View
- Откройте файл Form0.cs в режиме кода и раскомментируйте заблокированный нами ранее код открытия формы Form3 в обработчике второй кнопки
private void button3_Click(object sender, System.EventArgs e) { Form3 frm = new Form3(); frm.Show(); }Листинг 9.20. Разблокирование кода в обработчике кнопки формы Form0
- Запустите приложение, откройте форму Form3
После указания идентификатора заказчика CustomerID и щелчка на кнопке View заполняется расположенное ниже текстовое поле и в нем отображается информация о заказах выбранного заказчика. Результирующий экран будет такой