【发布时间】:2012-05-25 15:27:17
【问题描述】:
我正在编写一个将数据写入 SQL Server 2008r2 的 .NET 应用程序。我有两个插入数据的选项,我可以创建一个大字符串插入语句,并将其作为文本命令发送,或者我可以在 .NET DataTable 中收集数据,并将其作为表值参数传递。每种方法的好处和成本是什么?
(我省略了很多代码,因为我只是询问相对的好处,而不是具体的语法)
例如:
选项 1:
string insert = @"insert into MyTable (id, val) values
( 1, 'a'),(2,'b'),(3,'c'),(4,'d');"
选项 2:
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("val", typeof(string));
....
create procedure uspMyProc
@tt ttMyTableType readonly
as
begin
insert into TestTable1 (id, strValue)
select myId, myVal from @tt;
end"
感谢您的帮助。
【问题讨论】:
-
选项#3。使用 SqlCommand。该结构可以是动态的(当且仅在需要时),同时保持数据参数化。
-
(正确使用事务时,许多 SqlCommand 插入速度非常快。)
标签: c# .net sql-server sql-server-2008 sql-server-2008-r2