Eu posso forcar um fechamento da conexao sql atraves de 2 formas (Using e Finally (Try/Catch).
Gostaria de usar using, mas se alguma excessao for lancada, eu nao estarei tratando a mesma.
Seria o Try/Catch melhor entao ?
Qual a melhor pratica ?
1. Using
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();
}
2. Try/Catch/Finally
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("YOUR_CONNECTION_STRING");
cmd.CommandText = "SELECT * FROM ....";
try{
cmd.Connection.Open();
try{
SqlDataReader reader = cmd.ExecuteReader();
// ....
}finally{
cmd.Connection.Close();
}
} catch (SqlException ex){
// ex.Class contains the ErrorCode, depends on your dataprovider ofcourse
// You can retrive it
foreach (SqlError error in ex.Errors){
// error.LineNumber
// error.Message
// ...
}
}