如何:删除数据库中的记录

更新:2007 年 11 月

要从数据库中删除记录,请使用 TableAdapter.Update 方法或 TableAdapter.Delete 方法。或者,如果您的应用程序不使用 TableAdapters,您就可以使用命令对象从数据库中删除记录(例如,ExecuteNonQuery)。

当应用程序使用数据集存储数据时通常使用 TableAdapter.Update 方法,而当应用程序使用对象存储数据时通常会使用 TableAdapter.Delete 方法。

如果 TableAdapter 没有 Delete 方法,则意味着或者该 TableAdapter 是为使用存储过程而配置的,或者其 GenerateDBDirectMethods 属性被设置为 false。尝试从“数据集设计器”内将 TableAdapter 的 GenerateDBDirectMethods 属性设置为 true,然后保存该数据集以重新生成 TableAdapter。如果 TableAdapter 仍没有 Delete 方法,那么该表可能没有提供足够的架构信息在单个行之间进行区分(例如,表中未设置主键)。

使用 TableAdapters 删除记录

根据应用程序的需要,TableAdapters 提供了从数据库中删除记录的不同方法。

如果应用程序使用数据集存储数据,则可以直接从 DataSet 中所需的 DataTable 中删除记录,然后调用 TableAdapter.Update 方法。TableAdapter.Update 方法得到数据表中的所有更改,并将这些更改发送到数据库中(包括插入、更新以及删除记录)。

使用 TableAdapter.Update 方法从数据库中删除记录

  • 通过从表中删除 DataRow 对象,从所需 DataTable 中删除记录。有关更多信息,请参见如何:删除数据表中的行。从 DataTable 中删除行后,请调用 TableAdapter.Update 方法。通过传入完整的 DataSetDataTableDataRow 数组或单个 DataRow,您可以控制要更新的数据量。下面的代码显示如何从 DataTable 中删除记录,然后调用 TableAdapter.Update 方法传达更改并从数据库中删除行(此示例使用 Northwind 数据库的 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);
    

如果应用程序使用对象存储应用程序中的数据,您就可以使用 TableAdapter 的 DBDirect 方法直接从数据库中删除数据。根据传入的参数值,调用 Delete 方法从数据库中移除记录。

使用 TableAdapter.Delete 方法从数据库中删除记录

  • 调用 TableAdapter 的 Delete 方法,为每一列传入值作为 Delete 方法的参数(此示例使用 Northwind 数据库的 Region 表)。

    说明:

    如果没有实例可用,请实例化您要使用的 TableAdapter。

    Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter
    
    regionTableAdapter.Delete(5, "NorthWestern")
    
    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    regionTableAdapter.Delete(5, "NorthWestern");
    

使用命令对象删除记录

下面的示例使用命令对象直接从数据库中删除记录。有关使用命令对象执行命令和存储过程的更多信息,请参见将数据获取到应用程序

使用命令对象从数据库中删除记录

  • 创建新的命令对象,并设置它的 Connection、CommandType 和 CommandText 属性(此示例使用 Northwind 数据库的 Region 表)。

    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();
    

安全性

您必须具有访问正在尝试连接到的数据库的权限,以及从所需表中删除记录的权限。

请参见

任务

如何:将新记录插入数据库

如何:更新数据库中的记录

如何:将数据从对象保存到数据库

概念

TableAdapter 概述

其他资源

数据访问入门

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在 Windows 应用程序中的窗体上显示数据

在应用程序中编辑数据

验证数据

保存数据