Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

DBNull's से निपटने का सबसे अच्छा तरीका क्या है?

अशक्त प्रकार अच्छे हैं, लेकिन केवल उन प्रकारों के लिए जो शुरू करने योग्य नहीं हैं।

किसी प्रकार को "अशक्त" बनाने के लिए उस प्रकार के लिए एक प्रश्नवाचक चिह्न लगाएं, उदाहरण के लिए:

int? value = 5;

मैं "as . का उपयोग करने की भी अनुशंसा करता हूं " कास्टिंग के बजाय कीवर्ड। आप केवल "as" कीवर्ड का उपयोग अशक्त प्रकारों पर कर सकते हैं, इसलिए सुनिश्चित करें कि आप उन चीजों को कास्टिंग कर रहे हैं जो पहले से ही अशक्त हैं (जैसे तार) या आप ऊपर बताए अनुसार अशक्त प्रकारों का उपयोग करते हैं। इसका तर्क है

  1. यदि कोई प्रकार अशक्त है, तो "as " कीवर्ड रिटर्न null यदि कोई मान DBNull है ।
  2. यह कास्टिंग की तुलना में कभी-कभी-थोड़ा तेज है, हालांकि केवल कुछ मामलों में। यह अपने आप में as . का उपयोग करने के लिए पर्याप्त कारण नहीं है , लेकिन उपरोक्त कारणों के साथ यह उपयोगी है।

मैं कुछ ऐसा करने की सलाह दूंगा

DataRow row = ds.Tables[0].Rows[0];
string value = row as string;

उपरोक्त मामले में, यदि row DBNull . के रूप में वापस आता है , फिर value nullहो जाएगा अपवाद फेंकने के बजाय। सावधान रहें कि यदि आपकी DB क्वेरी लौटाए जा रहे स्तंभों/प्रकारों को बदल देती है, तो as . का उपयोग करके आपके कोड को चुपचाप विफल कर देगा और मानों को सरल बनाएं null गलत डेटा लौटाए जाने पर उपयुक्त अपवाद को फेंकने के बजाय, यह अनुशंसा की जाती है कि आपके कोडबेस विकसित होने के साथ-साथ डेटा अखंडता सुनिश्चित करने के लिए अन्य तरीकों से अपने प्रश्नों को सत्यापित करने के लिए आपके पास परीक्षण हों।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे एक varchar autoincrement करने के लिए

  2. SQL सर्वर में एक महीने में दिनों की संख्या कैसे निर्धारित करें?

  3. SQL कॉलम में सीमांकित मानों को कई पंक्तियों में विभाजित करना

  4. SQL सर्वर में स्थानीय और वैश्विक अस्थायी तालिकाओं के बीच अंतर

  5. पेश है SQL सर्वर में कॉमन टेबल एक्सप्रेशन