我需要使用ADO.NET向SQL 2008发送一个命令列表,一个接一个地执行。我应该为我发送的每个SQL创建一个新的SQLCommand吗? 或者重用相同的SQLCommand并只更改CommandText属性? 谢谢,内斯特
答案 0 :(得分:17)
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();
}
}
}