Практическое руководство. Удаление записей из базы данных
Обновлен: Ноябрь 2007
Для удаления записей из базы данных используйте метод TableAdapter.Update или TableAdapter.Delete. Или, если приложение не использует TableAdapters, можно использовать командные объекты для удаления записей из базы данных (например ExecuteNonQuery).
Метод TableAdapter.Update обычно применяется, когда приложение для хранения данных использует набор данных, тогда как метод TableAdapter.Delete обычно применяется, если приложение для хранения данных использует объекты.
Если TableAdapter не имеет метода Delete, это означает, что либо TableAdapter настроен на использование сохраненных процедур, либо свойство GenerateDBDirectMethods имеет значение false. Попробуйте присвоить свойству GenerateDBDirectMethods адаптера таблиц TableAdapter значение true из Конструктора наборов данных и затем сохранить набор данных, чтобы заново создать адаптер таблиц. Если TableAdapter по-прежнему не имеет метода Delete, то таблица, скорее всего, не предоставляет достаточно сведений о схеме для различения отдельных строк (например нет первичного ключа).
Удаление записей с помощью TableAdapters
Адаптеры таблиц предоставляют различные способы удаления записей из базы данных в зависимости от требований приложения.
Если приложение использует для хранения данных набор данных, то можно просто удалить записи из нужной таблицы DataTableDataSet, а затем вызвать метод TableAdapter.Update. Метод TableAdapter.Update принимает любые изменения в таблице данных и отправляет эти изменения в базу данных (включая добавленные, обновленные и удаленные записи).
Для удаления записей из базы данных с помощью метода TableAdapter.Update:
Удалите записи из нужной таблицы DataTable, удалив объекты DataRow из таблицы. Дополнительные сведения см. в разделе Практическое руководство. Удаление строк из объекта DataTable. После удаления строк из DataTable, вызовите метод TableAdapter.Update. Можно контролировать объем данных для обновления путем передачи всего DataSet, DataTable, массива DataRow или одной строки DataRow. Следующий фрагмент кода иллюстрирует удаление записи из DataTable и затем вызов метода TableAdapter.Update для передачи изменения и удаления строки из базы данных. (Этот пример использует таблицу Region базы данных "Борей".)
' Locate the row to delete. Dim oldRegionRow As NorthwindDataSet.RegionRow oldRegionRow = NorthwindDataSet._Region.FindByRegionID(5) ' Delete the row from the dataset oldRegionRow.Delete() ' Delete the row from the database Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
// Locate the row to delete. NorthwindDataSet.RegionRow oldRegionRow; oldRegionRow = northwindDataSet.Region.FindByRegionID(5); // Delete the row from the dataset oldRegionRow.Delete(); // Delete the row from the database this.regionTableAdapter.Update(this.northwindDataSet.Region);
Если приложение использует для хранения данных в приложении объекты, то для удаления данных непосредственно из базы данных можно применить методы DBDirect объекта TableAdapter. Метод Delete удаляет записи из базы данных на основе значений передаваемых параметров.
Для удаления записей из базы данных с помощью метода TableAdapter.Delete:
Вызовите метод адаптера таблиц Delete, передав значения для каждого столбца в качестве параметров метода Delete. (Этот пример использует таблицу Region базы данных Northwind.)
Примечание. Если у вас нет экземпляра адаптера таблиц, создайте экземпляр, который вы хотели бы использовать.
Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter.Delete(5, "NorthWestern")
NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = new NorthwindDataSetTableAdapters.RegionTableAdapter(); regionTableAdapter.Delete(5, "NorthWestern");
Удаление записей с помощью командных объектов
В следующем примере удаляются записи непосредственно из базы данных с помощью командных объектов. Дополнительные сведения по использованию объектов команд для выполнения команд и хранимых процедур содержатся в разделе Выборка данных в приложение.
Для удаления записей из базы данных с помощью командных объектов:
Создайте новый командный объект, задав его свойства Connection, CommandType и CommandText. (Этот пример использует таблицу Region базы данных Northwind.)
Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING") Dim cmd As New System.Data.SqlClient.SqlCommand cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern'" cmd.Connection = sqlConnection1 sqlConnection1.Open() cmd.ExecuteNonQuery() sqlConnection1.Close()
System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING "); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = "DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern'"; cmd.Connection = sqlConnection1; sqlConnection1.Open(); cmd.ExecuteNonQuery(); sqlConnection1.Close();
Безопасность
Необходимо иметь доступ к базе данных, к которой вы пытаетесь подключиться, а также разрешение на удаление записей из нужной таблицы.
См. также
Задачи
Практическое руководство. Вставка новых записей в базу данных
Практическое руководство. Обновление записей в базе данных
Практическое руководство. Сохранение данных из объекта в базе данных
Основные понятия
Общие сведения об адаптере таблиц
Другие ресурсы
Начало работы с доступом к данным
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Отображение данных на форме в приложениях Windows