Мне нужно отправить список команд SQL 2008 с помощью ADO.NET, которые будут выполняться один за другим. Должен ли я создать новый SQLCommand для каждого SQL, который я отправляю? Или повторно использовать тот же SQLCommand и просто изменить свойство CommandText? Спасибо, Нестор
Создайте новый SQLCommand или повторно используйте тот же самый
Ответ 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();
}
}
}