【发布时间】:2009-10-05 03:45:59
【问题描述】:
我需要使用 ADO.NET 向 SQL 2008 发送一个命令列表,以便一个接一个地执行。我应该为我发送的每个 SQL 创建一个新的 SQLCommand 吗? 还是重用相同的 SQLCommand 并仅更改 CommandText 属性? 谢谢,内斯特
【问题讨论】:
标签: .net sql-server ado.net
我需要使用 ADO.NET 向 SQL 2008 发送一个命令列表,以便一个接一个地执行。我应该为我发送的每个 SQL 创建一个新的 SQLCommand 吗? 还是重用相同的 SQLCommand 并仅更改 CommandText 属性? 谢谢,内斯特
【问题讨论】:
标签: .net sql-server ado.net
SqlCommands 非常轻量级。您每次都可以安全地创建一个新的。
参数化命令存在复杂性,您需要清除和重置所有参数,此时,创建新命令是干净、易于理解且有效的。
另外,通常也可以每次都使用一个新的SqlConnection。自动的、内置的连接池是提高效率的“魔法”。
我用这个:
public void ExecuteQuery(string query)
{
this.ExecuteQuery(query, null);
}
public void ExecuteQuery(string query, Dictionary<string, object> parameters)
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
if (parameters != null)
{
foreach (string parameter in parameters.Keys)
{
cmd.Parameters.AddWithValue(parameter, parameters[parameter]);
}
}
cmd.ExecuteNonQuery();
}
}
}
【讨论】: