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 returnprima.
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 tryabbiamo un errore e viene catturato. La connessione viene ancora chiusa? Perché di nuovo, saltiamo il resto del codice in trye andiamo direttamente catchall'istruzione.
Sto pensando in modo troppo lineare su come usingfunziona? cioè viene Dispose()semplicemente chiamato quando lasciamo l' usingambito?