如何:删除数据库中的记录
更新: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 方法。通过传入完整的 DataSet、DataTable、DataRow 数组或单个 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();
安全性
您必须具有访问正在尝试连接到的数据库的权限,以及从所需表中删除记录的权限。