方法 : データベースに新しいレコードを挿入する

更新 : 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 メソッドを使用してデータベースに新規レコードを挿入するには

  1. DataRow を新規作成して Rows コレクションに追加することによって、新しいレコードを目的の DataTable に追加します。詳細については、「方法 : DataTable に行を追加する」を参照してください。

  2. DataTable に新しい行を追加した後に、TableAdapter.Update メソッドを呼び出します。更新するデータの量は、DataSet 全体、単一の DataTableDataRow の配列、または単一の 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 メソッドを呼び出します。

    ms233812.alert_note(ja-jp,VS.90).gifメモ :

    使用できるインスタンスがない場合は、使用する 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 でのデータへの接続

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Windows アプリケーションのフォームでのデータの表示

アプリケーションでのデータ編集

データの検証

データの保存