データベースに新しいレコードを挿入するには、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();
セキュリティ
目的のテーブルで挿入を実行する許可および接続するデータベースに対するアクセス許可が必要です。
参照
処理手順
概念
Visual Studio でのデータへのコントロールのバインド
ID 値および Autonumber 値の取得 (ADO.NET)