SqlConnection
của ADO.NET đang triển khai một nhóm kết nối. Điều này có nghĩa là khi bạn đóng hoặc hủy một phiên bản của SqlConnection
, kết nối cơ bản chỉ đơn giản là quay trở lại nhóm. Khi một phiên bản khác của SqlConnection
được mở và một kết nối khả dụng trong nhóm kết nối, kết nối đó sẽ được sử dụng.
Trên thực tế, trang tài liệu của Microsoft trên SQL Server Connection Pooling nêu rõ:
Thận trọng
Chúng tôi đặc biệt khuyên bạn nên luôn đóng kết nối khi bạn sử dụng xong để kết nối sẽ quay trở lại nhóm. Bạn có thể thực hiện việc này bằng cách sử dụng phương thức Đóng hoặc Loại bỏ đối tượng Kết nối hoặc bằng cách mở tất cả các kết nối bên trong câu lệnh using trong C # hoặc câu lệnh using trong Visual Basic. Các kết nối không được đóng một cách rõ ràng có thể không được thêm vào hoặc trở lại nhóm. Để biết thêm thông tin, hãy xem cách sử dụng Tuyên bố hoặc Cách:Loại bỏ Tài nguyên Hệ thống cho Visual Basic.
Điều này có nghĩa là cách thực hành tốt nhất để sử dụng SqlConnection
đây có phải là:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
BTW, SqlCommand
, SqlDataReader
và SqlDataAdapter
cũng triển khai IDisposable
giao diện, vì vậy chúng cũng cần được sử dụng trong ngữ cảnh của using
tuyên bố:
using(var con = new SqlConnection(connectionString))
{
using(var cmd = new SqlCommand(sql, con))
{
// prepare command here - parameters and stuff like that
// either
using(var reader = cmd.ExecuteReader())
{
}
// or
using(var adapter = new SqlDataAdapter(cmd))
{
}
}
}