я взял этот код из MSDN
string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers";
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1));
}
}
поскольку Вы видите, что нет никакого использования для SqlCommand здесь, таким образом, делает это, должен быть?
Вам необходимо using
для каждого создаваемого вами объекта, реализующего IDisposable
. Это включает SqlCommand
и SqlConnection
.
Существует очень мало исключений из этого правила. Основным исключением являются клиентские прокси WCF. Из-за недостатка конструкции их метод Dispose
иногда может выбросить исключение. Если вы используете прокси в операторе using
, это второе исключение приведет к потере исходного исключения.
Вам не НЕОБХОДИМО использовать оператор using, но это хорошая практика, и вы ДОЛЖНЫ использовать Это. Он позволяет автоматически удалять объекты, использующие IDisposable.
http://msdn.microsoft.com/en-us/library/yh598w02 (VS.80) .aspx
Отредактировано для добавления ссылки и удаления неточного утверждения, потому что @John Saunders прав.