Доступ к БД из ASP.NET
Страница 7. Удаление данных из базы


Удаление данных из базы

В этом примере, на представленной странице, слева в таблице есть дополнительный столбец, который содержит специальную кнопочку для каждой строки. Нажатие этой кнопочки удаляет относящуюся к ней строку из базы данных.

Удаление строки из базы данных

1. Импортируем необходимые пространства имён.

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<html>

В тэге <script language="C#" runat="server">, представлен пример трёх функций: Page_Load, MyDataGrid_Delete и BindGrid. Более подробно эти функции описаны в представленных ниже шагах.

<script language="C#" runat="server">
SQLConnection myConnection;

2. Определяем функцию Page_Load, которая устанавливает информацию о подключении к базе данных "pubs". Также она проверяет, что эта страница не является PostBack, но если это так, вызывает специальную функцию BindGrid. BindGrid описана в шаге 4, главы 5. "Вставка данных в SQL базу данных".

3. Определяем функцию MyDataGrid_Delete. Эта функция выполняет SQL инструкцию DELETE, соединяется с базой данных, удаляет указанную строку и затем снова пересоздаёт DataGrid, чтобы отобразить пользователю модификации в базе данных.

public void MyDataGrid_Delete(Object sender, 
DataGridCommandEventArgs E)
{

а) Устанавливаем информацию для SQLCommand.

 String deleteCmd = "DELETE from Authors where au_id = @Id";
SQLCommand myCommand = new SQLCommand(deleteCmd,
myConnection);
myCommand.Parameters.Add(new SQLParameter("@Id",
SQLDataType.VarChar, 11));

б) Для SQLCommand инициализируем параметр "@id", для строки с таким id, который определяет выбранную для обновления строку.

 myCommand.Parameters["@Id"].Value = 
MyDataGrid.DataKeys[(int)E.Item.ItemIndex];

в) Соединяемся с базой данных, и удаляем указанную строку.

 myCommand.ActiveConnection.Open();

г) Проверяем, что данные были успешно удалены и возвращаем пользователю соответствующее сообщение.

 try 
{
int rowsAffected = 0;
myCommand.Execute(ref rowsAffected);
Message.InnerHtml = "<b>Запись удалена</b><br>" +
deleteCmd;
}
catch (SQLException)
{
Message.InnerHtml = "ОШИБКА: Не могу удалить запись";
Message.Style["color"] = "red";
}

д) Закрываем подключение.

 myCommand.ActiveConnection.Close();

е) Снова пересоздаём DataGrid, чтобы показать изменённую информацию.

 BindGrid();
}

4. Определение функции BindGrid. Эта функция подключается к базе данных и реализует стандартный SQL запрос "SELECT *", чтобы получить все данные из таблицы базы "Authors". BindGrid описана в шаге 4, главы 5. "Вставка данных в SQL базу данных".

5. Внутри <body> отображаем данные.

<body style="font: 10pt verdana">
<form runat="server">
<h3><font face="Verdana">Deleting a Row of Data</font></h3>
<span id="Message" MaintainState="false" style="font: arial 11pt;"
runat="server"/><p>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="800"
BackColor="#ccccff"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
DataKeyField="au_id"
OnDeleteCommand="MyDataGrid_Delete"
>
<property name="Columns">
<asp:ButtonColumn Text="Delete Author" Command="Delete"/>
</property>
</ASP:DataGrid>
</form>
</body>

 
Следующая статья »