• Microsoft .NET
  • ASP.NET
  • Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0

Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0 - Удаление информации при помощи элементов управления данными

ОГЛАВЛЕНИЕ

Удаление информации при помощи элементов управления данными

Элементы управления AccessDataSource, SqlDataSource и ObjectDataSource все поддерживают вставку, обновление и удаления. Вкратце, все три элемента обладают методом Delete, вызов которого выполняет следующую последовательность действий:

  1. Выполняется событие Deleting источника данных
  2. Происходит действие удаления
  3. Выполняется событие Deleting источника данных

Для различных элементов управления данными действие удаления различно. Для элементов AccessDataSource и SqlDataSource данное действие подразумевает соединение с указанной базой данных и выполнением выражения DELETE, указанного свойством DeleteCommand. Для ObjectDataSource действие удаления подразумевает создание экземпляра объекта источника данных и вызова указанного DeleteMethod. Данная статья фокусируется на элементе управления SqlDataSource.

Давайте детально исследуем действие удаления для элементов управления AccessDataSource и SqlDataSource. Выражение DELETE либо хранимая процедура, указанные DeleteCommand элемента, используют параметризированный запрос. То есть, если вы используете произвольное SQL-выражение для DeleteCommand, то выражение DELETE будет использовать параметры следующим образом:

DELETE FROM TableName
WHERE ColumnName1 = @Parameter1

Многие нестандартные выражения DELETE выглядят также, как и указанное выше: они указывают название таблицы и имеют единственный набор в их условии WHERE. Условие WHERE указывает значение конкретного первичного ключа, который надо удалить. В данном случае, где таблица имеет композитный первичный ключ (т.е., первичный ключ составлен из нескольких колонок), условие WHERE будет сравнивать каждую ключевую колонку следующим образом:

DELETE FROM TableName
WHERE ColumnName1 = @Parameter1 AND ColumnName2 = @Parameter2 AND ... AND ColumnNameN = @ParameterN

В статье о фильтрации базы данных при помощи параметров мы рассмотрели способ использования параметров в SelectCommand для фильтрации результатов, к примеру SELECT * FROM Products WHERE Price < @UnitPrice. Значение параметра @UnitPrice в данном экземпляре указывается посредством SelectParameters элемента управления источником данных, которое также может указать источник для значения параметра. Источником может быть: жёстко запрограммированное значение, например "3.95", которое позволит получить все товары, стоящие меньше чем $3.95; значение элемента управления на странице позволяет пользователю ввести значение цены в TextBox; значение из строки запроса; значение из состояния сессии и т.д.

Аналогично значения параметра в выражении DELETE назначаются основываясь на параметрах в наборе DeleteParameters элемента управления источником данных и эти параметры могут использовать те же источники, что и the SelectParameters.

Элементы управления AccessDataSource и SqlDataSource "за кадром" используют стандартные классы ADO.NET для реализации доступа к данным. То есть они соединяются к базе данных при помощи объекта SqlConnection или OleDbConnection и указывают текст команды и параметры посредством объекта SqlCommand или OleDbCommand.

На данном этапе мы можем выразить процесс удаления для AccessDataSource и SqlDataSource более детальным способом:

  1. Выполняется событие Deleting источника данных
  2. Создаются объекты SqlConnection и SqlCommand (или OleDbConnection и OleDbCommand)
  3. Свойству CommandText командного объекта назначается свойство DeleteCommand элемента управления источником данных
  4. К параметрам в наборе DeleteParameters элемента управления источником данных добавляется набор Parameters командного объекта
  5. Устанавливается соединение с базой данных и выполняется команда, тем самым осуществляя удаление данных
  6. Выполняется событие Deleted источника данных

Остальная часть статьи рассматривает три случая удаления используя элемент управления SqlDataSource: удаление данных вручную программно вызвав метод Delete элемента SqlDataSource; удаление данных при помощи элемента управления GridView; программная остановка процесса удаления в обработчике события Deleting элемента SqlDataSource. Полный код примеров вы можете скачать в конце данной статьи.