पहला सवाल:
मैंएक एसक्यूएलकनेक्शन वापसी या अपवाद पर बंद है?
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
काम करता हूं में बहुत रैखिक रूप से सोच रहा हूं? यानी Dispose()
जब हम using
गुंजाइश छोड़ते हैं तो बस कॉल किया जाता है?
@TreueWill - मैं सहमत हूं। मैंने बस ढांचे के लिए कोड को थोड़ा सा स्थानांतरित कर दिया। – David
प्रश्न: क्या मुझे उपयोग कथन का उपयोग करते समय कनेक्शन खोलने की आवश्यकता है? – Fandango68
यदि आप लेन-देन का उपयोग कर रहे हैं, तो 'उपयोग करने' के भीतर 'प्रयास करें' रखने के द्वारा आप 'पकड़' में स्पष्ट रूप से 'कॉमिट' या 'रोलबैक' लेनदेन कर सकते हैं। यह दोनों अधिक पठनीय और स्पष्ट है, और यदि आप अपवाद के प्रकार को समझते हैं तो आपको प्रतिबद्ध करने की अनुमति मिलती है। (यदि लेनदेन नहीं किया जाता है तो लेनदेन पूरी तरह से 'conn.close' पर वापस रोल करें।)। – Chris