方法 : データベースのレコードを削除する
更新 : 2007 年 11 月
データベースからレコードを削除する場合は、TableAdapter.Update メソッドまたは TableAdapter.Delete メソッドを使用します。または、アプリケーションが TableAdapter を使用しない場合は、ExecuteNonQuery などのコマンド オブジェクトを使用してデータベースのレコードを削除します。
アプリケーションがデータセットを使用してデータを格納する場合は、一般に TableAdapter.Update メソッドを使用し、アプリケーションがオブジェクトを使用してデータを格納する場合は、一般に TableAdapter.Delete メソッドを使用します。
TableAdapter に Delete メソッドがない場合は、TableAdapter がストアド プロシージャを使用するように構成されているか、または GenerateDBDirectMethods プロパティが false に設定されています。データセット デザイナで TableAdapter の GenerateDBDirectMethods プロパティを true に設定し、データセットを保存して TableAdapter を再作成してみてください。それでも TableAdapter に Delete メソッドがない場合は、テーブルが個々の行を区別するために十分なスキーマ情報を提供していないことが考えられます (テーブルに主キーが設定されていないなど)。
TableAdapter によるレコードの削除
TableAdapter は、アプリケーションの要件によってデータベースからレコードを削除するための複数の方法を提供します。
アプリケーションがデータセットを使用してデータを格納する場合は、単に DataSet の目的の DataTable からレコードを削除し、その後に TableAdapter.Update メソッドを呼び出すことができます。TableAdapter.Update メソッドは、挿入、更新、および削除されたレコードを含むデータ テーブルの変更を受け取ってデータベースに送ります。
TableAdapter.Update メソッドを使用してデータベースからレコードを削除するには
テーブルから DataRow オブジェクトを削除することによって、目的の DataTable からレコードを削除します。詳細については、「方法 : 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 メソッドを使用してデータベースからレコードを削除するには
各列の値を Delete メソッドのパラメータとして渡して TableAdapter の 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();
セキュリティ
目的のテーブルからレコードを削除する許可および接続するデータベースに対するアクセス許可が必要です。