您可以使用表值参数或将 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,请参考我的其他答案