要从数据库中删除记录,请使用 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();
安全性
您必须具有访问正在尝试连接到的数据库的权限,以及从所需表中删除记录的权限。