Перше питання:
Скажіть, що у мене є
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();
}
Чи закривається з'єднання? Тому що технічно ми ніколи не досягаємо останнього, }
як return
раніше.
Друге питання: На
цей раз у мене є:
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*/ }
Тепер, скажімо, десь try
ми отримуємо помилку, і вона потрапляє. Зв’язок все-таки закривається? Тому що знову ми пропускаємо решту коду в try
і переходимо безпосередньо до catch
оператора.
Я занадто лінійно думаю, як це using
працює? тобто Dispose()
просто дзвонять, коли ми залишаємо using
область застосування?