다음을 통해 공유


DBNull.Value 필드

정의

DBNull 클래스의 유일한 인스턴스를 나타냅니다.

public: static initonly DBNull ^ Value;
public static readonly DBNull Value;
 staticval mutable Value : DBNull
Public Shared ReadOnly Value As 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는 이 클래스의 이 instance 존재할 수 있다는 것을 의미하는 싱글톤 클래스입니다.

데이터베이스 필드에 누락된 데이터가 있는 경우 속성을 사용하여 DBNull.Value 개체 값을 필드에 명시적으로 할당 DBNull 할 수 있습니다. 그러나 대부분의 데이터 공급자는 이 작업을 자동으로 수행합니다.

데이터베이스 필드를 평가하여 해당 값이 DBNull인지 여부를 확인하려면 필드 값을 메서드에 DBNull.Value.Equals 전달할 수 있습니다. 그러나 이 메서드는 누락된 데이터에 대한 데이터베이스 필드를 평가하는 여러 가지 다른 방법이 있기 때문에 거의 사용되지 않습니다. 여기에는 Visual Basic IsDBNull 함수, 메서드, Convert.IsDBNull 메서드, DataTableReader.IsDBNull 메서드 및 기타 여러 메서드가 IDataRecord.IsDBNull 포함됩니다.

적용 대상