创建新的SQLCommand或重用相同的SQLCommand

时间:2009-10-05 03:46:00

标签: .net sql-server ado.net

我需要使用ADO.NET向SQL 2008发送一个命令列表,一个接一个地执行。我应该为我发送的每个SQL创建一个新的SQLCommand吗? 或者重用相同的SQLCommand并只更改CommandText属性? 谢谢,内斯特

1 个答案:

答案 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();
        }
    }
}