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

適用対象

こちらもご覧ください