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 variant。

DBNull 類型是單一類別,這表示只有一個 DBNull 物件存在。 成員 DBNull.Value 代表唯 DBNull 一的物件。 DBNull.Value 可用來明確將不存在的值指派給資料庫欄位,雖然大部分 ADO.NET 資料提供者都會在欄位沒有有效值時自動指派 的值 DBNull 。 您可以將該欄位的值傳遞至 DBNull.Value.Equals 方法,以判斷從資料庫欄位擷取的值是否為 DBNull 值。 不過,某些語言和資料庫物件會提供方法,讓您更輕鬆地判斷資料庫欄位的值是否為 DBNull.Value 。 這些包括 Visual Basic IsDBNull 函式、 Convert.IsDBNull 方法、 DataTableReader.IsDBNullIDataRecord.IsDBNull 方法和 方法。

請勿將 物件導向程式設計語言的概念 nullDBNull 物件混淆。 在物件導向程式設計語言中, 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

適用於

另請參閱