Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 891 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 9:

Редактирование данных в среде 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 элементы управления пользовательского интерфейса со значениями, указанными в таблице
Элементы управления формы Form3 и их свойства
Объект Свойство Значение
Label Text CustomerID:
  TextAlign MiddleLeft
TextBox Name txtCustID
  Text ALFKI
Button Name btnView
  Text &View
TextBox Name txtResults
  MultiLine True
  Dock Bottom
  Text Пусто
  ScrollBars Vertical
  • Расположите элементы управления пользовательского интерфейса так


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