다음을 통해 공유


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 interop은 클래스를 DBNull 사용하여 존재하지 않는 값을 나타내는 VT_NULL 변형과 지정되지 않은 값을 나타내는 VT_EMPTY 변형을 구분합니다.

형식은 DBNull 단일 클래스입니다. 즉, 하나의 DBNull 개체만 존재합니다. 멤버는 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 개체를 serialize하는 데 필요한 데이터를 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
GetTypeCode()

TypeCode에 대한 DBNull 값을 가져옵니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

빈 문자열(Empty)을 반환합니다.

ToString(IFormatProvider)

지정된 IFormatProvider를 사용하는 빈 문자열을 반환합니다.

명시적 인터페이스 구현

IConvertible.ToBoolean(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToByte(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToChar(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToDateTime(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToDecimal(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToDouble(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToInt16(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToInt32(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToInt64(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToSByte(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToSingle(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToType(Type, IFormatProvider)

현재 DBNull 개체를 지정된 형식으로 변환합니다.

IConvertible.ToUInt16(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToUInt32(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

IConvertible.ToUInt64(IFormatProvider)

이 변환은 지원되지 않습니다. 이 변환을 수행하려고 하면 InvalidCastException이 throw됩니다.

적용 대상

추가 정보