तो कनेक्शन खुला भरण() विधि कहा जाता है से पहले, तो कोई कनेक्शन DataAdapter द्वारा बंद कर दिया नहीं किया जाएगा।
हालांकि, अगर आप कनेक्शन को स्पष्ट रूप से नहीं खोलते हैं, और इसके बजाय डेटा एडाप्टर को भरें() कमांड के भीतर कनेक्शन खोलें और कनेक्शन को त्रुटि पर बंद कर दिया जाएगा। एक नियमित कि बाहर त्रुटि होगा लेखन और फिर कनेक्शन के राज्य की जाँच करके Data Access Strategies Using ADO.NET and SQL
इसके अलावा, इस कोड में प्रदर्शन किया जा सकता है:
इस दस्तावेज की कई स्रोतों, जिनमें से एक यह से गर्भित जा सकता है।
विंडोज फॉर्म ऐप से यह कोड यह साबित करता है। पहला संदेश बॉक्स "ओपन" और दूसरा "बंद" कहेंगे।
string connString = "";
private void Form1_Load(object sender, EventArgs e)
{
connString = Properties.Settings.Default.EventLoggingConnectionString;
ExplicitlyOpenConnection();
LetDataAdapterHandleIt();
}
private void ExplicitlyOpenConnection()
{
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(connString);
System.Data.DataSet ds = new DataSet();
System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter("Select bogusdata from nonexistenttable", cn);
cn.Open();
try
{
ad.Fill(ds);
}
catch (Exception ex)
{
}
MessageBox.Show(cn.State.ToString());
cn.Close();
}
private void LetDataAdapterHandleIt()
{
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(connString);
System.Data.DataSet ds = new DataSet();
System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter("Select bogusdata from nonexistenttable", cn);
try
{
ad.Fill(ds);
}
catch (Exception ex)
{
}
MessageBox.Show(cn.State.ToString());
}
इसे जानने के बिना मैं वास्तव में यह मानता हूं कि यह करता है। हालांकि आप कार्यान्वयन को देखने के लिए परावर्तक (http://www.red-gate.com/products/reflector/) का उपयोग कर सकते हैं और देख सकते हैं कि यह अंत में लागू होता है या नहीं। – AxelEckenberger