Первый вопрос:
скажи, что у меня есть
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string storedProc = "GetData";
SqlCommand command = new SqlCommand(storedProc, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
return (byte[])command.ExecuteScalar();
}
Соединение закрывается? Потому что технически мы никогда не добираемся до последнего, }
как return
раньше.
Второй вопрос: на
этот раз у меня есть:
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int employeeID = findEmployeeID();
connection.Open();
SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
command.CommandTimeout = 5;
command.ExecuteNonQuery();
}
}
catch (Exception) { /*Handle error*/ }
Теперь, скажем где-нибудь в, try
мы получаем ошибку, и она ловится. Соединение все еще закрывается? Потому что, опять же, мы пропускаем оставшуюся часть кода try
и переходим непосредственно к catch
выражению.
Я слишком линейно думаю о том, как using
работает? т.е. Dispose()
просто вызывается, когда мы покидаем using
сферу?