DBNull 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表不存在的數值。 此類別無法獲得繼承。
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 物件。
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 代表未初始化的變體或不存在的資料庫欄位。
欄位
| 名稱 | Description |
|---|---|
| Value |
代表該 DBNull 類別的唯一實例。 |
方法
| 名稱 | Description |
|---|---|
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
已淘汰.
實作介面 ISerializable 並回傳序列化 DBNull 物件所需的資料。 |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| GetTypeCode() | |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| ToString() |
回傳一個空字串(Empty)。 |
| ToString(IFormatProvider) |
回傳一個空字串,使用指定的 IFormatProvider。 |