Доступ к данным | Доступ к БД из ASP.NET | 7. Удаление данных из базы Дальше »

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>

Доступ к данным | Доступ к БД из ASP.NET | 7. Удаление данных из базы Дальше »
Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz