em um bloco "using" um SqlConnection é fechado no retorno ou exceção?
Primeira pergunta:
Diga que eu tenho
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();
}
A conexão é fechada? Porque tecnicamente nunca chegamos ao último}
como nósreturn
antes disso.
Segunda questão:
Desta vez eu tenho:
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*/ }
Agora, diga em algum lugar dotry
nós recebemos um erro e ele é pego. A conexão ainda é fechada? Porque, novamente, pulamos o restante do código notry
e vá diretamente para ocatch
declaração.
Estou pensando linearmente em comousing
trabalho? ieDispose()
basta ser chamado quando deixamos ousing
escopo?