ADO.NET का SqlConnection एक कनेक्शन पूल लागू कर रहा है। इसका मतलब यह है कि जब आप SqlConnection . के इंस्टेंस को बंद या डिस्पोज करते हैं , अंतर्निहित कनेक्शन बस पूल में वापस आ जाता है। जब SqlConnection . का एक और उदाहरण खोला गया है, और कनेक्शन पूल में एक कनेक्शन उपलब्ध है, उस कनेक्शन का उपयोग किया जाएगा।
वास्तव में, SQL सर्वर कनेक्शन पूलिंग पर Microsoft डॉक्स पृष्ठ स्पष्ट रूप से बताता है:
सावधानी
हम दृढ़ता से अनुशंसा करते हैं कि जब आप इसका उपयोग करना समाप्त कर लें तो आप हमेशा कनेक्शन को बंद कर दें ताकि कनेक्शन पूल में वापस आ जाए। आप कनेक्शन ऑब्जेक्ट के बंद या निपटान विधियों का उपयोग करके या सी # में एक प्रयोग कथन के अंदर सभी कनेक्शन खोलकर या विजुअल बेसिक में एक प्रयोग कथन का उपयोग करके ऐसा कर सकते हैं। जो कनेक्शन स्पष्ट रूप से बंद नहीं हैं, उन्हें जोड़ा या पूल में वापस नहीं किया जा सकता है। अधिक जानकारी के लिए, Statement या How to:Dispose of a System Resource for Visual Basic का उपयोग करना देखें।
इसका मतलब है कि SqlConnection using का उपयोग करने का सर्वोत्तम अभ्यास तरीका क्या यह है:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
बीटीडब्ल्यू, SqlCommand , SqlDataReader और SqlDataAdapter IDisposable . को भी लागू करता है इंटरफ़ेस, इसलिए उन्हें भी using . के संदर्भ में उपयोग करने की आवश्यकता है कथन:
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))
{
}
}
}