Доступ к базе данных из ASP.NET - Удаление данных из базы
ОГЛАВЛЕНИЕ
Удаление данных из базы
В этом примере, на представленной странице, слева в таблице есть дополнительный столбец, который содержит специальную кнопочку для каждой строки. Нажатие этой кнопочки удаляет относящуюся к ней строку из базы данных.
Удаление строки из базы данных
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>