.NET Framework アプリケーションのデータベースに新しいレコードを挿入する
Note
データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 これらが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。
.NET Framework プロジェクトで ADO.NET で新しいレコードをデータベースに挿入するには、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
メソッドがまだない場合、テーブルには、個別の行を区別するための十分なスキーマ情報がない可能性があります (たとえば、テーブルに主キーが設定されていない可能性があります)。
Note
この記事は、ADO.NET と.NET Framework での開発に適用されます。 Entity Framework 6 での同じ作業については、「新しいエンティティをコンテキストに追加する」を参照してください。 Entity Framework Core については、「データの追加」を参照してください。
TableAdapter を使用して新しいレコードを挿入する
TableAdapter には、アプリケーションの要件に応じて、データベースに新しいレコードを挿入するためのさまざまな方法が用意されています。
アプリケーションでデータセットを使用してデータを格納する場合は、データセット内の目的の DataTable に新しいレコードを追加し、TableAdapter.Update
メソッドを呼び出すことができます。 TableAdapter.Update
メソッドでは、DataTable の変更をデータベースに送信します (変更されたレコードと削除されたレコードを含む)。
TableAdapter.Update メソッドを使用して新しいレコードをデータベースに挿入するには
新しい DataRow を作成し、Rows コレクションに追加して、目的の DataTable に新しいレコードを追加します。
新しい行を DataTable に追加した後、
TableAdapter.Update
メソッドを呼び出します。 更新するデータの量を制御するには、DataSet 全体、DataTable、DataRow の配列、または単一の DataRow を渡します。次のコードでは、DataTable に新しいレコードを追加し、
TableAdapter.Update
メソッドを呼び出して新しい行をデータベースに保存する方法を示します (この例では、Northwind データベースの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 メソッドを使用して新しいレコードをデータベースに挿入するには
アプリケーションでオブジェクトを使用してデータを格納する場合は、TableAdapter.Insert
メソッドを使用してデータベースに直接新しい行を作成できます。 Insert
メソッドは、各列の個別の値をパラメーターとして受け取ります。 メソッドを呼び出すと、渡されたパラメーター値を使用して新しいレコードがデータベースに挿入されます。
- TableAdapter の
Insert
メソッドを呼び出し、各列の値をパラメーターとして渡します。
次の手順では、TableAdapter.Insert
メソッドを使用して行を挿入する方法を示します。 この例では、Northwind データベースの Region
テーブルにデータを挿入します。
Note
使用可能なインスタンスがない場合は、使用する TableAdapter をインスタンス化します。
NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter =
new NorthwindDataSetTableAdapters.RegionTableAdapter();
regionTableAdapter.Insert(5, "NorthWestern");
コマンド オブジェクトを使用して新しいレコードを挿入する
コマンド オブジェクトを使用して、新しいレコードをデータベースに直接挿入できます。
コマンド オブジェクトを使用して新しいレコードをデータベースに挿入するには
- 新しいコマンド オブジェクトを作成し、
Connection
、CommandType
、CommandText
の各プロパティを設定します。
次の例では、コマンド オブジェクトを使用してデータベースにレコードを挿入する方法を示します。 Northwind データベースの Region
テーブルにデータを挿入します。
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();
.NET セキュリティ
接続しようとしているデータベースへのアクセス権と、目的のテーブルに挿入を実行する権限が必要です。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示