2010-12-10 13 views
7

मैं सी # के माध्यम से एक एमएस एक्सेस 2007 डेटाबेस तक पहुंच रहा हूं, और जब भी मैं खाली सेल पढ़ने की कोशिश करता हूं तो मुझे अपवाद मिल रहा है।जांचें कि क्या डेटाबेस सेल खाली है

विशेष रूप से, मैं एक "दिनांक/समय" सेल पढ़ने की कोशिश कर रहा हूं जो खाली हो सकता है या नहीं भी हो सकता है। मैं OLE DB का उपयोग कर रहा हूं, और डेटासेट भर चुका हूं। इन शर्तों में से कोई भी काम नहीं करता:

DataSet dataSet = GetDataSet(); 
DataRow row = dataSet.Tables[0].Rows[0]; 
DateTime time = new DateTime(); 
time = (DateTime)row[5]; // Exception thrown 

यह जांचने के लिए कि सेल असाइन करने का प्रयास करने से पहले क्या खाली है या नहीं? इन काम में से कोई भी:

if(row[5] == null) ; 
if(row[5] == DBNull) ; 
if(row[5] == (String)"") ; 

संपादित करें: मैं उल्लेख करना चाहिए था: जब मैं डिबग, यह कहना है कि पंक्ति [5] के बराबर है "System.DBNull,", लेकिन जब मैं अगर (पंक्ति की कोशिश "मैं कोई त्रुटि मिलती है [5] == डीबीएनयूएलएल) "। त्रुटि कहती है "डीबीएनयूएलएल एक प्रकार है, जो दिए गए संदर्भ में मान्य नहीं है"।

+2

"सेल" क्या आपको स्प्रेडशीट के संदर्भ है, डेटाबेस से निपटने पर यह रिकॉर्ड में एक विशिष्ट कॉलम है। –

उत्तर

9

आप इसे निम्न की तरह देख सकते हैं।

if (row[5] == DBNull.Value) 
{ 
    // value is null 
} 
else if (String.IsNullOfEmpty(Convert.ToString(row[5])) 
{ 
    // value is still null 
} 
else 
{ 
    // value is not null here 
} 
+0

धन्यवाद, यही है। मैंने डीबीएनयूएलएल के बाद "। वैल्यू" नहीं लगाया। – Eric

+0

आपका स्वागत है :) .... –

+0

कृपया इसे उत्तर के रूप में चिह्नित करें यदि यह वास्तव में आपकी मदद करता है। धन्यवाद :) –

3
if(row[5] == DBNull.Value) 
+0

धन्यवाद। बस। "। वैल्यू" – Eric

+0

:) भूल गए हैं, आपका स्वागत है – TalentTuner

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