【发布时间】:2010-11-04 16:17:15
【问题描述】:
我正在开发一个控制台应用程序以将数据插入 MS SQL Server 2005 数据库。我有一个要插入的对象列表。这里我以Employee类为例:
List<Employee> employees;
我能做的就是像这样一次插入一个对象:
foreach (Employee item in employees)
{
string sql = @"INSERT INTO Mytable (id, name, salary)
values ('@id', '@name', '@salary')";
// replace @par with values
cmd.CommandText = sql; // cmd is IDbCommand
cmd.ExecuteNonQuery();
}
或者我可以像这样构建一个插入查询:
string sql = @"INSERT INTO MyTable (id, name, salary) ";
int count = employees.Count;
int index = 0;
foreach (Employee item in employees)
{
sql = sql + string.format(
"SELECT {0}, '{1}', {2} ",
item.ID, item.Name, item.Salary);
if ( index != (count-1) )
sql = sql + " UNION ALL ";
index++
}
cmd.CommandType = sql;
cmd.ExecuteNonQuery();
我猜后一种情况是一次插入多行数据。但是,如果我有 几ks的数据,SQL查询字符串有限制吗?
我不确定在性能方面,一次插入多行是否优于一次插入一行数据?
有什么更好的建议吗?
【问题讨论】:
标签: c# sql sql-server sql-server-2005 tsql