由于您正在使用
c#和
sql server 2008,因此可以使用表值参数向数据库中插入多行。这是有关如何执行此操作的简短说明:
首先,您需要创建一个用户定义的表类型:
CREATE TYPE MyTableType AS TABLE( Col1 int, Col2 varchar(20) )GO
然后,您需要创建一个存储过程,该存储过程将接受此表类型作为参数
CREATE PROCEDURE MyProcedure( @MyTable dbo.MyTableType READonLY -- NOTE: table valued parameters must be Readonly!)ASINSERT INTO MyTable (Col1, Col2)SELECt Col1, Col2 FROM @MyTableGO
最后,从您的C#代码执行以下存储过程:
DataTable dt = new DataTable();dt.Columns.Add("Col1", typeof(int));dt.Columns.Add("Col2", typeof(string));// Fill your data table hereusing (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(); }}


