में रोलबैक के लिए एसक्लट्रांसेंस ऑब्जेक्ट तक नहीं पहुंच सकता है मुझे एक समस्या है, और मुझे मिले सभी लेख या उदाहरण इस पर ध्यान नहीं देते हैं।कैच ब्लॉक
मैं एक लेनदेन में कुछ डेटाबेस क्रियाएं करना चाहता हूं। मुझे क्या करना चाहते हैं बहुत सबसे उदाहरण के समान है:
using (SqlConnection Conn = new SqlConnection(_ConnectionString))
{
try
{
Conn.Open();
SqlTransaction Trans = Conn.BeginTransaction();
using (SqlCommand Com = new SqlCommand(ComText, Conn))
{
/* DB work */
}
}
catch (Exception Ex)
{
Trans.Rollback();
return -1;
}
}
लेकिन समस्या यह है कि SqlTransaction Trans
try
ब्लॉक के अंदर घोषित किया जाता है है। तो यह catch()
ब्लॉक में पहुंच योग्य नहीं है। try
ब्लॉक से पहले अधिकांश उदाहरण Conn.Open()
और Conn.BeginTransaction()
करते हैं, लेकिन मुझे लगता है कि यह थोड़ा जोखिम भरा है, क्योंकि दोनों कई अपवाद फेंक सकते हैं।
क्या मैं गलत हूं, या अधिकांश लोग इस जोखिम को अनदेखा करते हैं? यदि कोई अपवाद होता है तो रोलबैक करने में सक्षम होने का सबसे अच्छा समाधान क्या है?
पीएस क्या आप वाकई अपवाद फेंकने के बजाय -1 (एक त्रुटि कोड) वापस करना चाहते हैं? –