方法 : データベースに新しいレコードを挿入する
更新 : 2007 年 11 月
データベースに新しいレコードを挿入するには、TableAdapter.Update メソッドを使用するか、または TableAdapter の DBDirect のメソッドの 1 つ (つまり TableAdapter.Insert メソッド) を使用します。詳細については、「TableAdapter の概要」を参照してください。
アプリケーションが TableAdapter を使用しない場合は、SqlCommand などのコマンド オブジェクトを使用してやり取りし、新しいレコードをデータベースに挿入します。
アプリケーションがデータセットを使用してデータを格納する場合は、TableAdapter.Update メソッドを使用します。Update メソッドは、すべての変更内容 (更新、挿入、および削除) をデータベースに送ります。
アプリケーションがオブジェクトを使用してデータを格納する場合、またはデータベースにおけるレコードの新規作成をより細かく制御する場合は、TableAdapter.Insert メソッドを使用します。
TableAdapter に Insert メソッドがない場合は、TableAdapter がストアド プロシージャを使用するように構成されているか、または GenerateDBDirectMethods プロパティが false に設定されています。データセット デザイナで TableAdapter の GenerateDBDirectMethods プロパティを true に設定し、データセットを保存して TableAdapter を再作成してみてください。それでも TableAdapter に Insert メソッドがない場合は、テーブルが個々の行を区別するために十分なスキーマ情報を提供していないことが考えられます (テーブルに主キーが設定されていないなど)。
TableAdapter による新規レコードの挿入
TableAdapter は、アプリケーションの要件によってデータベースに新規レコードを挿入するための複数の方法を提供します。
アプリケーションがデータセットを使用してデータを格納する場合は、単にデータセットの目的の DataTable に新規レコードを追加し、その後に TableAdapter.Update メソッドを呼び出すことができます。TableAdapter.Update メソッドは、変更および削除されたレコードを含む DataTable のすべての変更を受け取ってデータベースに送ります。
TableAdapter.Update メソッドを使用してデータベースに新規レコードを挿入するには
DataRow を新規作成して Rows コレクションに追加することによって、新しいレコードを目的の DataTable に追加します。詳細については、「方法 : DataTable に行を追加する」を参照してください。
DataTable に新しい行を追加した後に、TableAdapter.Update メソッドを呼び出します。更新するデータの量は、DataSet 全体、単一の DataTable、DataRow の配列、または単一の DataRow を渡すことによって制御できます。
DataTable に新規レコードを追加し、TableAdapter.Update メソッドを呼び出してデータベースに新しい行を保存するコード例を次に示します。この例では、Northwind データベースの Region テーブルを使用します。
' Create a new row. Dim newRegionRow As NorthwindDataSet.RegionRow newRegionRow = Me.NorthwindDataSet._Region.NewRegionRow() newRegionRow.RegionID = 5 newRegionRow.RegionDescription = "NorthWestern" ' Add the row to the Region table Me.NorthwindDataSet._Region.Rows.Add(newRegionRow) ' Save the new row to the database Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
// Create a new row. NorthwindDataSet.RegionRow newRegionRow; newRegionRow = northwindDataSet.Region.NewRegionRow(); newRegionRow.RegionID = 5; newRegionRow.RegionDescription = "NorthWestern"; // Add the row to the Region table this.northwindDataSet.Region.Rows.Add(newRegionRow); // Save the new row to the database this.regionTableAdapter.Update(this.northwindDataSet.Region);
アプリケーションがオブジェクトを使用してデータを格納する場合、TableAdapter.Insert メソッドを使用してデータベースに直接新しい行を作成できます。Insert メソッドは、各列の値をパラメータとして受け取ります。このメソッドを呼び出すと、渡されたパラメータ値を使用してデータベースに新規レコードが挿入されます。
次の手順では、例として Northwind データベースの Region テーブルを使用します。
TableAdapter.Insert メソッドを使用してデータベースに新規レコードを挿入するには
各列の値をパラメータとして渡して TableAdapter の Insert メソッドを呼び出します。
メモ : 使用できるインスタンスがない場合は、使用する TableAdapter をインスタンス化します。
Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter.Insert(5, "NorthWestern")
NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = new NorthwindDataSetTableAdapters.RegionTableAdapter(); regionTableAdapter.Insert(5, "NorthWestern");
コマンド オブジェクトによる新規レコードの挿入
コマンド オブジェクトを使用してデータベースに新規レコードを直接挿入する例を次に示します。コマンド オブジェクトによるコマンドとストアド プロシージャの実行の詳細については、「アプリケーションへのデータのフェッチ」を参照してください。
次の手順では、例として Northwind データベースの Region テーブルを使用します。
コマンド オブジェクトを使用してデータベースに新規レコードを挿入するには
新しいコマンド オブジェクトを作成し、Connection、CommandType、および CommandText の各プロパティを設定します。
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 = "INSERT Region (RegionID, RegionDescription) VALUES (5, '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 = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')"; cmd.Connection = sqlConnection1; sqlConnection1.Open(); cmd.ExecuteNonQuery(); sqlConnection1.Close();
セキュリティ
目的のテーブルで挿入を実行する許可および接続するデータベースに対するアクセス許可が必要です。