DBNull 类

来源:互联网 发布:淘宝网火车票 编辑:程序博客网 时间:2024/04/25 20:12

DBNull 类表示一个不存在的值。例如,在数据库的表中,某一行的某列中可能不包含任何数据。即,该列被视为根本不存在,而不只是没有值。一个表示不存在的列的DBNull 对象。 此外,COM 互操作使用DBNull 类来区分 VT_NULL 变量(指示不存在的值)和 VT_EMPTY 变量(指示未指定的值)。

DBNull 类型是一个单独的类,这意味着只有一个DBNull 对象存在。DBNull.Value 成员表示单独的DBNull 对象。DBNull.Value 可用于将不存在的值显式分配给数据库字段,但大多数 ADO.NET 数据提供程序在字段没有有效值时会自动分配DBNull 值。您可以通过将从数据库字段检索到的值传递给DBNull.Value.Equals 方法,确定该字段值是否为DBNull 值。然而,有些语言和数据库对象提供一些方法,可以更容易地确定数据库字段值是否为DBNull.Value这些方法包括 Visual Basic 的IsDBNull 函数、Convert.IsDBNull 方法、DataTableReader.IsDBNull 方法和 IDataRecord.IsDBNull 方法。

请勿将面向对象的编程语言中的null 概念与DBNull 对象混淆。在面向对象的编程语言中,null 表示缺少对象的引用。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;
}