| Китай |
Редактирование данных в среде 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 заполняется расположенное ниже текстовое поле и в нем отображается информация о заказах выбранного заказчика. Результирующий экран будет такой





