2010-03-08 13 views
17

मैं उपयोगकर्ता को यह बताना चाहता हूं कि एक रिकॉर्ड हटाया नहीं गया था क्योंकि इसमें बाल डेटा है, लेकिन मैं कैसे सुनिश्चित कर सकता हूं कि विदेशी कुंजी उल्लंघन के कारण अपवाद फेंक दिया गया था? मैं देखता हूं कि वहां एक स्क्लेक्सप्शन क्लास है जिसका उपयोग सभी एसक्यूएल अपवाद के लिए किया जाता है।विदेशी कुंजी उल्लंघन के कारण एक SQLexception फेंक दिया गया था, तो मुझे कैसे पता चलेगा?

उत्तर

39

मान लें कि आप SQL सर्वर का उपयोग कर रहे हैं।

तेह Googles का उपयोग करना - http://blogs.msdn.com/tomholl/archive/2007/08/01/mapping-sql-server-errors-to-net-exceptions-the-fun-way.aspx

try 
{ 
    # SQL Stuff 
} 
catch (SqlException ex) 
{ 
    if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error 
    { 
     switch (ex.Errors[0].Number) 
     { 
      case 547: // Foreign Key violation 
       throw new InvalidOperationException("Some helpful description", ex); 
       break; 
      case 2601: // Primary key violation 
       throw new DuplicateRecordException("Some other helpful description", ex); 
       break; 
      default: 
       throw new DataAccessException(ex); 
     } 
    } 

} 

प्रकरण 547 अपने आदमी है।

अद्यतन उपरोक्त नमूना कोड है और इसका उपयोग नहीं किया जाना चाहिए। व्याख्या करने के लिए कृपया लिंक का पालन करें क्यों।

+2

यदि आप लिंक का पालन करते हैं, और नीचे पढ़ते हैं, तो आप देखेंगे कि उपर्युक्त कोड को उदाहरण के रूप में दिया गया है कि यह * नहीं * कैसे करें ... – bornfromanegg

+0

बिल्कुल सही - मेरा उद्देश्य केवल यह कोड होना था त्रुटि पकड़ने का एक विस्तारित संस्करण दिखाने के लिए। मुझे लगता है कि मुझे नोटिस नहीं देना चाहिए (क्योंकि यह अन्य पेज के साथ मुद्दा है)। – aronchick

-2

तुम कोशिश ब्लॉक में अपने अपवाद-उम्मीद कोड यदि कोई अपवाद फेंक दिया जाएगा यह पकड़ आगे अब हो जाएगा प्राप्त होने वाले त्रुटि number.now जांच कर सकते हैं कि यह एक विदेशी कुंजी उल्लंघन या नहीं

है सकते हैं लिख सकते हैं
try 
{ 

//your deletetion code 

}catch (SqlException ex) 
    { 

     if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error 
     { 
      switch (ex.Errors[0].Number) 
      { 
       case 547: // Foreign Key violation 
        lblError.Text = "Cannot Delete this Record this is associated with other record...!"; 

        break; 
       default: 
        throw; 

      } 
     } 
    } 
+1

कृपया अन्य उत्तरों दोहराना न करें –

संबंधित मुद्दे

 संबंधित मुद्दे