Represents the sole instance of the DBNull class.
Assembly: mscorlib (in mscorlib.dll)
Public Shared ReadOnly Value As DBNull
public static readonly DBNull Value
public: static initonly DBNull^ Value
static val Value: DBNull
DBNull is a singleton class, which means only this instance of this class can exist.
If a database field has missing data, you can use the DBNull.Value property to explicitly assign a DBNull object value to the field. However, most data providers do this automatically.
To evaluate database fields to determine whether their values are DBNull, you can pass the field value to the DBNull.Value.Equals method. However, this method is rarely used because there are a number of other ways to evaluate a database field for missing data. These include the Visual Basic IsDBNull function, the Convert.IsDBNull method, the DataTableReader.IsDBNull method, the IDataRecord.IsDBNull method, and several other methods.
The following example calls the DBNull.Value.Equals method to determine whether a database field in a contacts database has a valid value. If it does, the field value is appended to the string output in a label.
Private Sub OUtputLabels(dt As DataTable) Dim label As String ' Iterate rows of table For Each row As DataRow In dt.Rows Dim labelLen As Integer label = String.Empty label += AddFieldValue(label, row, "Title") label += AddFieldValue(label, row, "FirstName") label += AddFieldValue(label, row, "MiddleInitial") label += AddFieldValue(label, row, "LastName") label += AddFieldValue(label, row, "Suffix") label += vbCrLf label += AddFieldValue(label, row, "Address1") label += AddFieldValue(label, row, "AptNo") label += vbCrLf labelLen = Len(label) label += AddFieldValue(label, row, "Address2") If Len(label) <> labelLen Then label += vbCrLf label += AddFieldValue(label, row, "City") label += AddFieldValue(label, row, "State") label += AddFieldValue(label, row, "Zip") Console.WriteLine(label) Console.WriteLine() Next End Sub Private Function AddFieldValue(label As String, row As DataRow, _ fieldName As String) As String If Not DbNull.Value.Equals(row.Item(fieldName)) Then Return CStr(row.Item(fieldName)) & " " Else Return Nothing End If End Function
private void OutputLabels(DataTable dt) { string label; // Iterate rows of table foreach (DataRow row in dt.Rows) { int labelLen; label = String.Empty; label += AddFieldValue(label, row, "Title"); label += AddFieldValue(label, row, "FirstName"); label += AddFieldValue(label, row, "MiddleInitial"); label += AddFieldValue(label, row, "LastName"); label += AddFieldValue(label, row, "Suffix"); label += "\n"; label += AddFieldValue(label, row, "Address1"); label += AddFieldValue(label, row, "AptNo"); label += "\n"; labelLen = label.Length; label += AddFieldValue(label, row, "Address2"); if (label.Length != labelLen) label += "\n"; label += AddFieldValue(label, row, "City"); label += AddFieldValue(label, row, "State"); label += AddFieldValue(label, row, "Zip"); Console.WriteLine(label); Console.WriteLine(); } } private string AddFieldValue(string label, DataRow row, string fieldName) { if (! DBNull.Value.Equals(row[fieldName])) return (string) row[fieldName] + " "; else return String.Empty; }
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Reference
In the VB.NET example, it should be using "&=" instead of "+=".
Concatenation Operators in Visual Basic
Visual Basic has two concatenation operators, & and +, that behave identically. And the + operator is overloaded to perform addition with numeric values and concatenation with strings. So to concatenate two strings and assign the result back to the original string, you can use either the &= or the += operator. They both offer identical functionality. Which one you use is a matter of personal preference.
--Ron Petrusha
Common Language Runtime User Education
Microsoft Corporation