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

Редактирование данных в среде ADO.NET

Динамическое создание и выполнение пакетных заданий по обновлению данных в среде ADO.NET

Иногда в приложениях для баз данных во время выполнения программы приходится создавать и вызывать хранимые процедуры, которые не существуют в базе данных. В этом упражнении показано, как это делать. Мы будем использовать объект System.Data.OleDb.OleDbCommand, в котором свойству CommandText присваивается значение из текстового поля. В текстовом поле мы зададим SQL-оператор

UPDATE Employees SET City = 'Redmond' WHERE City = 'Seattle'

При нажатии кнопки Выполнить программа откроет таблицу Employees в базе данных Northwind и заменит в поле City все значения Seattle на новые значения Redmond. При этом функция выполнения команды вернет количество записей, в которых выполнены замены.

  • Создайте новую форму с именем Form4
  • Добавьте вверху исходного кода сгенерированного файла Form4.cs пространства имен в режиме View Code
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 Form4 : System.Windows.Forms.Form
.................................................
}
Листинг 9.21. Добавление пространства имен в файл Form4.cs для работы с базами данных
  • Поместите на форму элементы управления со значениями свойств согласно таблице
Элементы управления формы Form4 и их свойства
Объект Свойство Значение
Label Text Введите и выполните команду обновления данных:
  TextAlign MiddleCenter
TextBox Name txtSQL
  Text UPDATE Employees SET City = 'Redmond' WHERE City = 'Seattle'
  MultiLine True
Label Text Найденно записей:
TextBox Name txtRecsAffected
  ReadOnly True
  Text Пусто
  BorderStyle FixedSingle
Button Name btnExecute
  Text Выполнить
  • Дизайн формы должен быть таким


  • Через меню Format замкните элементы командой Lock Controls, чтобы случайно не изменить интерфейс
  • Двойным щелчком на кнопке Выполнить создайте обработчик события Click и заполните его кодом, приведенным ниже.

В коде после порождения экземпляра объекта команды свойству CommandText этого объекта присваивается строковое значение текстового поля txtSQL. Тип команды устанавливается как CommandType.Text. Затем открывается соединение. Выполнение команды осуществляется методом System.Data.OleDb.OleDbCommand.ExecuteNonQuery().

Возвращаемое значение, представляющее собой количество записей, измененных по команде, помещается в текстовое поле txtRecsAffected.

private void btnExecute_Click(object sender, System.EventArgs e)
{
  // Создаем объект соединения с базой данных
  OleDbConnection ocnn = new OleDbConnection(
    this.BuildCnnStr("localhost", "Northwind"));
  // Создаем объект команд
  OleDbCommand ocmdPhoneUp = new OleDbCommand(this.txtSQL.Text, ocnn);
  
  // Защищенный режим выполнения
  try
  {
    // Указать тип команды как "текст"
    ocmdPhoneUp.CommandType = CommandType.Text;
    // Открыть объект соединения
    ocnn.Open();
    // Выполняем команду без запроса на выборку данных
    this.txtRecsAffected.Text = 
      ocmdPhoneUp.ExecuteNonQuery().ToString();
  }
  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.22. Обработчик события Click кнопки Выполнить
  • Откройте файл Form0.cs в режиме кода и раскомментируйте заблокированный нами ранее код открытия формы Form4 в обработчике второй кнопки
private void button4_Click(object sender, System.EventArgs e)
{
  Form4 frm = new Form4();
  frm.Show();
}
Листинг 9.23. Разблокирование кода в обработчике кнопки формы Form0
  • Запустите приложение, откройте форму Form4 и выполните с ее помощью замену данных в таблице Employees

Внешний вид выполненных вариантов будет таким