2009-04-01 14 views
11

मेरे पास DataTable resultSet; है - मैं फ़ील्ड को शून्य के लिए जांचने की कोशिश कर रहा हूं, लेकिन '{}' (खाली-सेट?) ऑब्जेक्ट वापस प्राप्त करें। "{}" से जुड़े खोज किसी उचित समाधान नहीं दे रहे हैं। मुद्दा Columns.IndexOf() के बजाय एक पूर्णांक सूचकांक उपयोग कर रहा है नहीं:सी # डेटाटेबल आइटमअरे रिटर्न '{}' - मैं शून्य मूल्य के लिए कैसे परीक्षण कर सकता हूं?

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == null) 
{ 
    //never reaches here 
} 

नोट:

इस कोड है कि काम नहीं कर रहा है के रूप में की उम्मीद है जब "fk_id" फ़ील्ड रिक्त है।

क्या "{}" में सी # में कुछ अन्य नाम भी है?

उत्तर

18

किसी डेटासेट में DBNull के लिए एक कॉलम की जाँच करने के लिए, आप IsNull विधि का उपयोग कर सकते हैं:

if (resultSet.Rows[0].IsNull("fk_id")) 

null के खिलाफ आपका तुलना शायद इसलिए है क्योंकि डेटासेट null का उपयोग नहीं करते एक "डेटाबेस शून्य" मूल्य का प्रतिनिधित्व करने के लिए विफल हो रहा है - वे DBNull.Value का उपयोग करते हैं। आप जिस तरह से आप यह प्रस्तुत किया है काम करने के लिए अपने कोड की जरूरत है, इस प्रयास करें:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value) 
+0

ग्रेट धन्यवाद, पूरी तरह से "डीबीएनयूएल.वैल्यू" के बारे में भूल गया - यह थोड़ी देर हो गया है क्योंकि मैंने डेटा सेट –

+0

में हेरफेर किया है, मुझे आश्चर्य है कि उन्होंने इसे नल का उपयोग करने के बजाय क्यों बनाया है? –

+2

@ k.rob क्योंकि .NET 1.0 में कोई Nullable नहीं था, इसलिए "शून्य" के Int32 मान का प्रतिनिधित्व करने का कोई तरीका नहीं था। –

-2
try 
{ 
    if (DT.Rows[0][0] != null) 
    {  
     //your code 
    }  
}  
catch  
{  
    MessageBox.Show("AUTHANICATION FAILED.");  
} 
-2

का उपयोग करें:

dataTable.Select("FieldName is NULL") 

इस FieldName कॉलम में शून्य मान के साथ DataRows दे देंगे ।

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