在 C# 中使用参数化变量执行批量插入
在数据库操作中,通常需要向数据库中插入多个参数化变量,尤其是当数据库正在从 Web 应用程序接收数据。为了优化此类操作并避免重复,可以使用存储过程和表值参数。
要在 C# 中实现此目的,请按照以下步骤操作:
创建用户定义的表类型(UDT):
定义 UDT 以匹配要插入的数据的结构。例如:
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO
使用表值参数创建存储过程:
创建一个接受 UDT 作为参数的存储过程。该过程会将数据插入到目标数据库表中:
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
填充数据表:
使用参数执行存储过程:
执行命令进行批量插入。
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(); } }
通过以下步骤,您可以高效地执行使用 C# 代码对 SQL Server 数据库进行参数化批量插入。这种方法不仅可以防止重复,还可以通过对多行执行单个查询来优化数据库性能。
以上是如何在 C# 和 SQL Server 中执行高效的参数化批量插入?的详细内容。更多信息请关注PHP中文网其他相关文章!