DBNull クラス

定義

存在しない値を表します。 このクラスは継承できません。

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
継承
DBNull
属性
実装

次の例では、メソッドを DBNull.Value.Equals 呼び出して、連絡先データベースのデータベース フィールドに有効な値があるかどうかを判断します。 その場合、フィールド値はラベルの文字列出力に追加されます。

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

注釈

このクラスは DBNull 、存在しない値を表します。 たとえば、データベースでは、テーブルの行の列にデータが一切含まれていない場合があります。 つまり、列は単に値を持たないのではなく、まったく存在しないと見なされます。 オブジェクトは DBNull 、存在しない列を表します。 さらに、COM 相互運用機能では、クラスを DBNull 使用して、存在しない値を示すVT_NULLバリアントと、指定されていない値を示すVT_EMPTYバリアントを区別します。

型は DBNull シングルトン クラスです。つまり、存在するオブジェクトは 1 つだけ DBNull です。 メンバーは DBNull.Value 、唯一 DBNull のオブジェクトを表します。 DBNull.Value は、データベース フィールドに存在しない値を明示的に割り当てるために使用できますが、ほとんどの ADO.NET データ プロバイダーは、フィールドに有効な値がない場合の DBNull 値を自動的に割り当てます。 データベース フィールドから取得した値が値であるかどうかを判断するには、 DBNull そのフィールドの値をメソッドに DBNull.Value.Equals 渡します。 ただし、一部の言語およびデータベース オブジェクトは、データベース フィールド DBNull.Valueの値が . これには、Visual BasicIsDBNull関数、メソッド、Convert.IsDBNullDataTableReader.IsDBNullメソッド、およびメソッドがIDataRecord.IsDBNull含まれます。

オブジェクト指向プログラミング言語の概念 null をオブジェクトと DBNull 混同しないでください。 オブジェクト指向プログラミング言語では、 null オブジェクトへの参照がないことを意味します。 DBNull は、初期化されていないバリアントまたは存在しないデータベース列を表します。

フィールド

Value

DBNull クラスの唯一のインスタンスを表します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)

ISerializable インターフェイスを実装し、DBNull オブジェクトをシリアル化するために必要なデータを返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetTypeCode()

TypeCodeDBNull 値を取得します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

空の文字列 (Empty) を返します。

ToString(IFormatProvider)

指定した IFormatProvider を使用して、空の文字列を返します。

明示的なインターフェイスの実装

IConvertible.ToBoolean(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToByte(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToChar(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToDateTime(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToDecimal(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToDouble(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToInt16(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToInt32(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToInt64(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToSByte(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToSingle(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToType(Type, IFormatProvider)

現在の DBNull オブジェクトを指定した型に変換します。

IConvertible.ToUInt16(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToUInt32(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

IConvertible.ToUInt64(IFormatProvider)

この変換はサポートされていません。 この変換を試みると、InvalidCastException がスローされます。

適用対象

こちらもご覧ください