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

जब कोई परिणाम नहीं लौटाया जाता है तो ExecuteScalar () को संभालना

DbCommand.ExecuteScalar के लिए MSDN दस्तावेज़ के अनुसार:

<ब्लॉककोट>

यदि परिणाम सेट में पहली पंक्ति का पहला कॉलम नहीं मिलता है, तो एनल रेफरेंस (विजुअल बेसिक में कुछ भी नहीं) दिया जाता है। यदि डेटाबेस में मान शून्य है, तो क्वेरी DBNull.Value लौटाती है।

निम्नलिखित स्निपेट पर विचार करें:

using (var conn = new OracleConnection(...)) {
    conn.Open();
    var command = conn.CreateCommand();
    command.CommandText = "select username from usermst where userid=2";
    string getusername = (string)command.ExecuteScalar();
}

रन-टाइम पर (ODP.NET के तहत परीक्षण किया गया लेकिन किसी भी ADO.NET प्रदाता के तहत समान होना चाहिए), यह इस तरह व्यवहार करता है:

  • यदि पंक्ति मौजूद नहीं है, तो command.ExecuteScalar() का परिणाम है शून्य है, जिसे बाद में एक नल स्ट्रिंग में डाला जाता है और getusername . को असाइन किया जाता है ।
  • यदि पंक्ति मौजूद है, लेकिन उपयोगकर्ता नाम में NULL है (क्या यह आपके DB में भी संभव है?), command.ExecuteScalar() का परिणाम है। है DBNull.Value , जिसके परिणामस्वरूप एक InvalidCastException . है ।

किसी भी स्थिति में, NullReferenceException संभव नहीं होना चाहिए, इसलिए आपकी समस्या शायद कहीं और है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle डेटाबेस में सभी कार्यों की सूची बनाएं

  2. क्या Oracle में एक से अधिक बार प्रक्रिया के निष्पादन से बचने का सबसे अच्छा तरीका है?

  3. घंटे या दिन के हिसाब से रिकॉर्ड को समूहबद्ध करना और शून्य या शून्य के साथ अंतराल भरना

  4. टेबल फंक्शन और पाइपलाइन फंक्शन के बीच अंतर?

  5. JDBC का उपयोग करके Oracle Clob को कैसे अपडेट करें