2011-01-28 15 views
7

मैं डेटाबेस संचालन करते समय अलग-अलग समस्याओं को संभालना चाहता हूं, अलग-अलग।वास्तविक समस्या को कैसे जानें, जिसके कारण एसक्लएक्सप्शन फेंक दिया गया है?

उदा गलत डेटाबेस प्रमाण-पत्र या नेटवर्क समस्या के कारण ऑपरेशन विफल हो सकता है। या यह विफल हो सकता है क्योंकि क्वेरी सही नहीं है (यदि स्ट्रिंग मान int टाइप कॉलम में पारित किया जा रहा है)

मेरे सी # कोड में, हमारे पास केवल SqlException है जिसमें SqlErrors का संग्रह है। हालांकि कई गंभीरता स्तर हैं।

मैं आसानी से एसक्लएक्सप्शन के कारण की पहचान कैसे कर सकता हूं? मैं कनेक्टिविटी समस्या या प्रमाणीकरण विफलता या क्वेरी के साथ समस्या के कारण अपवाद का निर्धारण कैसे कर सकता हूं।

मैं एसक्यूएल सर्वर का उपयोग कर रहा 2005.

+0

मैं एक सामान्य प्रयोजन समाधान के लिए तक पहुँचने के लिए भी कोशिश की। मेरा लक्ष्य अंत उपयोगकर्ता को अधिक उपयोगकर्ता के अनुकूल त्रुटि संदेश प्रस्तुत करना था। मुझे अभी तक कोई कामकाजी समाधान नहीं मिला है। –

उत्तर

9

ऐसा कुछ करने का प्रयास करें, इससे आपको विभिन्न स्थितियों को संभालने में मदद मिलेगी।

उपयोग इस तरह एक कोशिश पकड़ ब्लॉक:

try  
{ 
    ... 
    ... 
} 
catch (SqlException ex) 
{ 
    switch (ex.Number) 
    { 
     case 4060: // Invalid Database 
        .... 
        break; 

     case 18456: // Login Failed 

        .... 

        break; 

     case 547: // ForeignKey Violation 

        .... 

        break; 

     case 2627: 
       // Unique Index/ Primary key Violation/ Constriant Violation 

        .... 

        break; 

     case 2601: // Unique Index/Constriant Violation 

        .... 

        break; 

     default: 

        .... 

        break;  

     } 
} 
+2

टिप्पणी कारणों से आपको इन विशिष्ट संख्याओं को कहां से मिला? मैं नेटवर्क विफलता आदि जैसे कुछ और कारणों के लिए ऐसी संख्या चाहता हूं। एसक्यूएल में संदेशों की सिस्टम तालिका हजारों संदेश देती है और इसलिए यह मेरे लिए काफी आसान नहीं है। – Learner

+0

@CSharpLearner: मुझे यह त्रुटि संदेश विभिन्न स्रोतों जैसे ब्लॉग और मेरे प्रोजेक्ट में पहले कोड आदि से प्राप्त हुए हैं। हो सकता है कि आप इन त्रुटि कोड को अपने डेटाबेस से प्राप्त कर सकें, इस क्वेरी को "सिलेम्स से चुनें" – JPReddy

+0

@CSharpLearner: वाह, जो वास्तव में मुझे लगता है कि – JPReddy

1

SQLException संपत्ति Class जो आप गंभीरता स्तर देना चाहिए उजागर करता है।

अधिक जानकारी here

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