Nothing
इसका मतलब है कि किसी वस्तु को प्रारंभ नहीं किया गया है, DBNull
इसका मतलब है कि डेटा परिभाषित/गायब नहीं है। जाँच करने के कई तरीके हैं:
' The VB Function
If IsDBNull(Reader.Item(0)) Then...
GetDateTime
विधि समस्याग्रस्त है क्योंकि आप इसे एक गैर मान को डेटटाइम में बदलने के लिए कह रहे हैं। Item()
रिटर्न ऑब्जेक्ट जिसे आसानी से पहले . परखा जा सकता है परिवर्तित।
' System Type
If System.DBNull.Value.Equals(...)
आप DbReader भी कर सकते हैं। यह केवल क्रमसूचक अनुक्रमणिका के साथ काम करता है, स्तंभ नाम के साथ नहीं:
If myReader.IsDbNull(index) Then
उसके आधार पर, आप या तो साझा वर्ग के सदस्यों के रूप में कार्यों को एक साथ रख सकते हैं या डीबीएनयूएल के परीक्षण के लिए एक्सटेंशन में फिर से काम कर सकते हैं और एक डिफ़ॉल्ट मान वापस कर सकते हैं:
Public Class SafeConvert
Public Shared Function ToInt32(Value As Object) As Integer
If DBNull.Value.Equals(Value) Then
Return 0
Else
Return Convert.ToInt32(Value)
End If
End Function
Public Shared Function ToInt64(Value As Object) As Int64
If DBNull.Value.Equals(Value) Then
Return 0
Else
Return Convert.ToInt64(Value)
End If
End Function
' etc
End Class
उपयोग:
myDate = SafeConvert.ToDateTime(Reader.Item(0))
डेटटाइम कनवर्टर के लिए, आपको यह तय करना होगा कि क्या वापस करना है। मैं उन्हें व्यक्तिगत रूप से करना पसंद करता हूं।