क्या कोई अपवाद होने पर निम्न कोड कनेक्शन खोलता है?अपवाद की स्थिति में डेटाबेस कनेक्शन को बंद करने का सही तरीका
मैं एक माइक्रोसॉफ्ट एसक्यूएल कॉम्पैक्ट संस्करण डेटाबेस का उपयोग कर रहा हूं।
try
{
SqlCeConnection conn = new SqlCeConnection(ConnectionString);
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
conn.Close();
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
निश्चित रूप से एक बेहतर तरीका, कोशिश से पहले एक कनेक्शन वस्तु घोषित कोशिश ब्लॉक के अंदर एक संबंध स्थापित है और एक अंत में ब्लॉक में बंद करने के लिए हो सकता है? क्योंकि कनेक्शन हमेशा अंत में बंद किया जाना चाहिए
SqlCeConnection conn = null;
try
{
conn = new SqlCeConnection(ConnectionString);
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
finally
{
if(conn != null) conn.Close();
}
मैं अभी भी इसके चारों ओर अपने सिर को लपेट नहीं सकता। रेफरी से: "यदि एसक्यूएलसीकनेक्शन गुंजाइश से बाहर हो जाता है, तो यह बंद नहीं होता है। आपको बंद या निपटान को कॉल करके कनेक्शन को स्पष्ट रूप से बंद करना होगा।" अपने पहले उदाहरण में आप "कनेक्शन को स्पष्ट रूप से बंद नहीं करते"। –
'उपयोग' कथन का उपयोग करते समय, यह उपयोग की जा रही वस्तु पर 'निपटान' विधि को कॉल करता है, जो बदले में 'SqlCeConnection' के मामले में 'बंद करें' विधि को कॉल करेगा। 'SqlCeConnection' पर 'निपटान'' कहा जाता है, यह देखने के लिए आईएलएसपी जैसे टूल का उपयोग करें कि कौन सा कोड निष्पादित किया जाता है। प्रलेखन देखें [यहां] (http://msdn.microsoft.com/en-us/library/bb300654%28v=vs.100%29.aspx)। – shahkalpesh