Prima domanda:
dire che ho
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();
}
La connessione viene chiusa? Perché tecnicamente non arriviamo mai all'ultimo }
come return
prima.
Seconda domanda:
questa volta ho:
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*/ }
Ora, dì da qualche parte nel che try
abbiamo un errore e viene catturato. La connessione viene ancora chiusa? Perché di nuovo, saltiamo il resto del codice in try
e andiamo direttamente catch
all'istruzione.
Sto pensando in modo troppo lineare su come using
funziona? cioè viene Dispose()
semplicemente chiamato quando lasciamo l' using
ambito?