Câu hỏi đầu tiên:
Nói tôi có
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();
}
Kết nối có bị đóng không? Bởi vì về mặt kỹ thuật, chúng tôi không bao giờ đi đến người cuối cùng }như chúng tôi returntrước đó.
Câu hỏi thứ hai:
Lần này tôi có:
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*/ }
Bây giờ, nói ở đâu đó trong trychúng tôi nhận được một lỗi và nó bị bắt. Kết nối vẫn bị đóng? Bởi vì một lần nữa, chúng tôi bỏ qua phần còn lại của mã trong tryvà đi thẳng đến catchcâu lệnh.
Tôi có suy nghĩ quá tuyến tính trong cách làm usingviệc không? tức là Dispose()chỉ đơn giản được gọi khi chúng ta rời khỏi usingphạm vi?