Создайте новый SQLCommand или используйте тот же - PullRequest
13 голосов
/ 05 октября 2009

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

1 Ответ

17 голосов
/ 05 октября 2009

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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...