en un bloque "en uso", ¿se cierra una SqlConnection a cambio de una excepción?
Primera pregunta:
Di que tengo
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();
}
¿Se cierra la conexión? Porque técnicamente nunca llegamos al último}
Como nosotrosreturn
antes de eso.
Segunda pregunta:
Esta vez tengo:
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*/ }
Ahora, digamos en algún lugar deltry
obtenemos un error y queda atrapado. ¿La conexión todavía se cierra? Porque nuevamente, omitimos el resto del código en eltry
e ir directamente a lacatch
declaración.
¿Estoy pensando demasiado linealmente en cómousing
¿trabajos? es decirDispose()
simplemente llama cuando dejamos elusing
¿alcance?