2011-01-19 12 views
16

मैं MySqlDataReader पर एक NULL मान की जांच कैसे कर सकता हूं?कॉलम के नाम से MySQLDataReader में NULL की जांच कैसे करें?

निम्नलिखित काम नहीं करता है; यह हमेशा else समाप्त हो रहा है:

if (rdr.GetString("timeOut") == null) 
{ 
    queryResult.Egresstime = "Logged in"; 
} 
else 
{ 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
} 

rdr.IsDbNull(int i) केवल एक स्तंभ संख्या स्वीकार करता है, का नाम नहीं।

उत्तर

28
var ordinal = rdr.GetOrdinal("timeOut"); 
if(rdr.IsDBNull(ordinal)) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString(ordinal); 
}//if 

या

if(Convert.IsDBNull(rdr["timeOut"])) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
}//if 
+0

आप अपनी खुद की हरे रंग की जांच विजेता 0 एफ हैं। मैंने दूसरा इस्तेमाल किया। धन्यवाद! – rd42

+0

दूसरे उदाहरण में छोटे टाइपो: "IsDbNull" को "IsDBNull" में बदलें – 4mla1fn

+0

@ 4mla1fn धन्यवाद, मैंने अपना जवाब संपादित कर लिया है। –

13

अगर (rdr.GetString ("समय समाप्त") == DBNull.Value)

null DBNull

मैं माफी चाहता, गलत जवाब कर रहा हूँ के रूप में ही नहीं है, सैम बी सही है। मैंने इसे DataRow सामान के लिए गलत समझा।

SqlDataReader ने दृढ़ता से GetString() टाइप किया है और इस मामले के लिए IsDBNull(int column) प्रदान करता है।

+2

मुझे लगता है कि यह होना चाहिए 'DBNull.Value' – VoodooChild

+0

@BoodooChild - धन्यवाद – Axarydax

+0

यहाँ मैं क्या त्रुटि \t 1 मिलती है: ऑपरेटर '==' प्रकार के ऑपरेंड के लिए लागू नहीं किया जा सकता 'स्ट्रिंग' और 'System.DBNull' – rd42

1

nullDBNull.Value बदलें।

+0

मुझे जो त्रुटि मिलती है वह त्रुटि \t 1: ऑपरेटर '==' प्रकार 'स्ट्रिंग' और 'System.DBNull' के ऑपरेटरों पर लागू नहीं किया जा सकता - – rd42

1

तुम भी कर सकते हैं:

If (string.IsNullOrEmpty(rdr.GetString("timeOut"))

+0

समान प्रभाव है (rdr.GetString ("timeOut") == null) – rd42

+1

@ rd42: तो डीबग करते समय उस क्षेत्र में वास्तविक मूल्य क्या है? बस उत्सुक? – VoodooChild

+0

मूल्य है: 12/7/2010 10:16:46 पूर्वाह्न आपकी मदद के लिए धन्यवाद। – rd42

3

आप rdr.IsDBNull(column) फोन करता है, तो मूल्य DbNull है निर्धारित करने के लिए आवश्यक है।

1

आप उद्देश्य यह है कि DBNull.Value साथ शून्य क्षेत्र से पुनर्प्राप्त तुलना कर सकते हैं।

0

यहाँ एक है मुझे पसंद है:

var MyString = rdr["column"] is DBNull ? "It's null!" : rdr.GetString("column"); 

जैसे (मूल आवश्यकता के लिए):

queryResult.Egresstime = rdr["timeOut"] is DBNull ? "Logged in" : rdr.GetString("timeOut");