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 return
trướ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 try
chú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 try
và đi thẳng đến catch
câu lệnh.
Tôi có suy nghĩ quá tuyến tính trong cách làm using
việc không? tức là Dispose()
chỉ đơn giản được gọi khi chúng ta rời khỏi using
phạm vi?