Создайте новый SQLCommand или повторно используйте тот же самый

Мне нужно отправить список команд SQL 2008 с помощью ADO.NET, которые будут выполняться один за другим. Должен ли я создать новый SQLCommand для каждого SQL, который я отправляю? Или повторно использовать тот же SQLCommand и просто изменить свойство CommandText? Спасибо, Нестор

Ответ 1

SqlCommands довольно легкие. Вы можете создавать новый каждый раз.

Есть осложнения с параметризованными командами, где вам нужно очистить и reset все параметры, и в этот момент создание новой команды является чистым, понятным и эффективным.

Кроме того, обычно нормально использовать новый 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();
        }
    }
}