Vì bạn đang sử dụng c#
và sql server 2008
, bạn có thể sử dụng một tham số có giá trị bảng để chèn nhiều hàng vào cơ sở dữ liệu của mình. Dưới đây là mô tả ngắn gọn về cách thực hiện việc này:
Trước tiên, bạn cần tạo một loại bảng do người dùng xác định:
CREATE TYPE MyTableType AS TABLE
(
Col1 int,
Col2 varchar(20)
)
GO
Sau đó, bạn cần tạo một thủ tục được lưu trữ sẽ chấp nhận loại bảng này làm tham số
CREATE PROCEDURE MyProcedure
(
@MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly!
)
AS
INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2
FROM @MyTable
GO
Cuối cùng, thực hiện thủ tục được lưu trữ này từ mã c # của bạn:
DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));
// Fill your data table here
using (var con = new SqlConnection("ConnectionString"))
{
using(var cmd = new SqlCommand("MyProcedure", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt;
con.Open();
cmd.ExecuteNonQuery();
}
}