คำถามแรก:
บอกว่าฉันมี
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
ทำงานอย่างไร ie Dispose()
ได้รับการเรียกเมื่อเราออกจากusing
ขอบเขตหรือไม่?