データベースに 1 回アクセスするだけで、テーブル値パラメーターを使用するか、xml を入力として複数回挿入するストアド プロシージャを使用できます。
テーブル値パラメータ:-
CREATE TYPE dbo.ProductType AS TABLE
( ProductID int, Name nvarchar(250),Price decimal(10,2),Quantity int )
CREATE PROCEDURE sp_InsertProducts
(@tvpProducts dbo.ProductType READONLY)
AS
BEGIN
INSERT INTO dbo.Products (ProductID , Name ,Price,Quantity )
SELECT a.ProductID ,a.Name ,a.Price, a.Quantity FROM @tvpProducts AS a;
END
C#アプリケーションで製品のリストを作成し、ユーザーが新しい製品を作成するたびにアイテムを追加し、最後にユーザーがSumbitボタンをクリックしてリストをデータテーブルに変換し、SQLクエリを実行します
ユーザーが新しいボタンをクリックして製品を追加すると、コレクションを使用してアイテムを追加します
List<Product> _product= new List<Product>
_product.Add()
{
//Bind the gridview columns to the respective fields of the product class
};
送信ボタンをクリックしたら、次のコードを記述します
DataTable dtProducts = ConvertListToDataTable(_product);
SqlCommand cmd = new SqlCommand("sp_InsertProducts", sqlConnection);
SqlParameter p = cmd.Parameters.AddWithValue("@tvpNewDistricts", dtProducts );
p.SqlDbType = SqlDbType.Structured;
p.TypeName = "dbo.ProductType";
cmd.ExecuteNonQuery();
XML Stored procを使用する場合は、他の回答を参照してください