Страница 7 из 8
Удаление данных из базы В этом примере, на представленной странице, слева в таблице есть дополнительный столбец, который содержит специальную кнопочку для каждой строки. Нажатие этой кнопочки удаляет относящуюся к ней строку из базы данных. Удаление строки из базы данных 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> |