DBNull Klass

Definition

Representerar ett obefintligt värde. Det går inte att ärva den här klassen.

public ref class DBNull sealed
public ref class DBNull sealed : IConvertible, System::Runtime::Serialization::ISerializable
public sealed class DBNull
public sealed class DBNull : IConvertible, System.Runtime.Serialization.ISerializable
[System.Serializable]
public sealed class DBNull : IConvertible, System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DBNull : IConvertible, System.Runtime.Serialization.ISerializable
type DBNull = class
type DBNull = class
    interface IConvertible
    interface ISerializable
[<System.Serializable>]
type DBNull = class
    interface ISerializable
    interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DBNull = class
    interface ISerializable
    interface IConvertible
Public NotInheritable Class DBNull
Public NotInheritable Class DBNull
Implements IConvertible, ISerializable
Arv
DBNull
Attribut
Implementeringar

Exempel

I följande exempel anropas DBNull.Value.Equals metoden för att avgöra om ett databasfält i en kontaktdatabas har ett giltigt värde. Om det gör det läggs fältvärdet till i strängutdata i en etikett.

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;
}
member this.OutputLabels(dt: DataTable) =
    let mutable label = ""

    // Iterate rows of table
    for row in dt.Rows do
        let mutable label = String.Empty
        label <- label + this.AddFieldValue(label, row, "Title")
        label <- label + this.AddFieldValue(label, row, "FirstName")
        label <- label + this.AddFieldValue(label, row, "MiddleInitial")
        label <- label + this.AddFieldValue(label, row, "LastName")
        label <- label + this.AddFieldValue(label, row, "Suffix")
        label <- label + "\n"
        label <- label + this.AddFieldValue(label, row, "Address1")
        label <- label + this.AddFieldValue(label, row, "AptNo")
        label <- label + "\n"
        let labelLen = label.Length
        label <- label + this.AddFieldValue(label, row, "Address2")
        let labelLen =
            if label.Length <> labelLen then
                label + "\n"
            else label
        label <- label + this.AddFieldValue(label, row, "City")
        label <- label + this.AddFieldValue(label, row, "State")
        label <- label + this.AddFieldValue(label, row, "Zip")
        printfn $"{label}"
        printfn ""

member _.AddFieldValue(label: string, row: DataRow, fieldName: string) =
    if DBNull.Value.Equals row[fieldName] |> not then
        (string row[fieldName]) + " "
    else
        String.Empty
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

Kommentarer

Klassen DBNull representerar ett obefintligt värde. I en databas kanske till exempel en kolumn i en rad i en tabell inte innehåller några data alls. Kolumnen anses alltså inte finnas alls i stället för att bara ha ett värde. Ett DBNull objekt representerar den obefintliga kolumnen. Dessutom använder DBNull COM interop -klassen för att skilja mellan en VT_NULL variant, vilket indikerar ett obefintligt värde och en VT_EMPTY variant, vilket indikerar ett ospecificerat värde.

Typen DBNull är en singleton-klass, vilket innebär att endast ett DBNull objekt finns. Medlemmen DBNull.Value representerar det enda DBNull objektet. DBNull.Value kan användas för att uttryckligen tilldela ett obefintligt värde till ett databasfält, även om de flesta ADO.NET-dataleverantörer automatiskt tilldelar värden för DBNull när ett fält inte har ett giltigt värde. Du kan avgöra om ett värde som hämtats från ett databasfält är ett DBNull värde genom att skicka värdet för fältet till DBNull.Value.Equals metoden. Vissa språk och databasobjekt tillhandahåller dock metoder som gör det enklare att avgöra om värdet för ett databasfält är DBNull.Value. Dessa inkluderar funktionen Visual Basic IsDBNull, metoden Convert.IsDBNull, metoden DataTableReader.IsDBNull och metoden IDataRecord.IsDBNull.

Blanda inte ihop begreppet null i ett objektorienterat programmeringsspråk med ett DBNull objekt. I ett objektorienterat programmeringsspråk null innebär det att det inte finns någon referens till ett objekt. DBNull representerar en onitialiserad variant eller obefintlig databaskolumn.

Fält

Name Description
Value

Representerar den enda instansen av DBNull klassen.

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetObjectData(SerializationInfo, StreamingContext)
Föråldrad.

Implementerar ISerializable gränssnittet och returnerar de data som behövs för att serialisera DBNull objektet.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
GetTypeCode()

TypeCode Hämtar värdet för DBNull.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en tom sträng (Empty).

ToString(IFormatProvider)

Returnerar en tom sträng med den angivna IFormatProvider.

Explicita gränssnittsimplementeringar

Name Description
IConvertible.ToBoolean(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToChar(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToDateTime(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToDecimal(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToInt32(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToInt64(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToSByte(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToSingle(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToType(Type, IFormatProvider)

Konverterar det aktuella DBNull objektet till den angivna typen.

IConvertible.ToUInt16(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToUInt32(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

IConvertible.ToUInt64(IFormatProvider)

Den här konverteringen stöds inte. Om du försöker göra den här konverteringen genererar en InvalidCastException.

Gäller för

Se även