C#判断数据库返回记录是否是NULL的DBNull 类DBNull.Value.Equals(row[fieldName]

定义

命名空间:

System

程序集:

System.Runtime.dll

表示不存在的值。 此类不能被继承。

C#复制

public sealed class DBNull : IConvertible, System.Runtime.Serialization.ISerializable

继承

Object

DBNull

实现

IConvertible  ISerializable

示例

下面的示例调用 DBNull.Value.Equals 该方法来确定联系人数据库中的数据库字段是否具有有效值。 如果这样做,字段值将追加到标签中的字符串输出。

C#复制

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;
}

注解

类 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 BasicIsDBNull函数、Convert.IsDBNull方法、DataTableReader.IsDBNull方法和IDataRecord.IsDBNull方法。

不要将面向对象的编程语言的概念 null 与 DBNull 对象混淆。 在面向对象的编程语言中, null 表示缺少对对象的引用。 DBNull 表示未初始化的变体或不存在的数据库列。

字段

Value

表示 DBNull 类的唯一实例。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetObjectData(SerializationInfo, StreamingContext)

实现 ISerializable 接口并返回序列化 DBNull 对象所需的数据。

GetType()

获取当前实例的 Type

(继承自 Object)
GetTypeCode()

获取 TypeCode 的 DBNull 值。

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

适用于

产品版本
.NETCore 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7 Preview 2
.NET Framework1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard2.0, 2.1
UWP10.0
Xamarin.iOS10.8
Xamarin.Mac3.0

另请参阅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值