最佳答案
第一个问题:
就算我有
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
的工作方式上思维过于线性?即当我们离开 using
作用域时,Dispose()
是否仅仅被调用?