HOW TO:刪除資料庫中的資料錄
更新:2007 年 11 月
若要刪除資料庫中的資料錄,請使用 TableAdapter.Update 方法或 TableAdapter.Delete 方法。或者,如果您的應用程式並未使用 TableAdapter,您就可以使用命令物件來刪除資料庫中的資料錄 (例如,ExecuteNonQuery)。
當您的應用程式使用資料集儲存資料時,通常會使用 TableAdapter.Update 方法,而當您的應用程式使用物件儲存資料時,則通常會使用 TableAdapter.Delete 方法。
如果 TableAdapter 並沒有任何 Delete 方法,就是表示此 TableAdapter 是設定成使用預存程序,或者其 GenerateDBDirectMethods 屬性設定為 false。請嘗試從 DataSet 設計工具之內,將 TableAdapter 的 GenerateDBDirectMethods 屬性設定為 true,然後儲存資料集以重新產生 TableAdapter。如果 TableAdapter 仍然沒有 Delete 方法,則此資料表可能無法提供足夠的結構描述資訊,以區別個別的資料列 (例如,資料表上沒有設定任何主索引鍵)。
使用 TableAdapter 刪除資料錄
TableAdapter 會根據應用程式的需求,提供不同的方式來刪除資料庫中的資料錄。
如果您的應用程式使用資料集儲存資料,您就只要在 DataSet 中刪除所需 DataTable 的資料錄,然後呼叫 TableAdapter.Update 方法即可。TableAdapter.Update 方法會採用資料表中的任何變更,並將這些變更傳送至資料庫中 (包括已插入、已更新和已刪除的資料錄)。
若要使用 TableAdapter.Update 方法刪除資料庫中的資料錄
從所需的 DataTable 刪除資料錄,方法是從資料表刪除 DataRow 物件。如需詳細資訊,請參閱 HOW TO:刪除 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");
使用命令物件刪除資料錄
下列範例會使用命令物件,直接從資料庫刪除資料錄。如需使用命令物件來執行命令和預存程序 (Stored Procedure) 的詳細資訊,請參閱將資料擷取至您的應用程式中。
若要使用命令物件刪除資料庫中的資料錄
建立新的命令物件,然後設定其 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();
安全性
您必須擁有嘗試連接之資料庫的存取權,以及從所需資料表刪除資料錄的使用權限。