繁体   English   中英

在C#中检查DBNull

[英]Check DBNull in C#

我有一个StronglyTyped数据行对象,可以像这样访问它。

accountFilter.Currency_ID

Currency_ID(整数类型)是行名。 AccountFilter是DataRow。 当它给出一个值时,没问题。 但是,当列值为NULL时,它将给出DBNull异常。 我想检查DBNull的值,但是不起作用。

bool a = Convert.IsDBNull(accountFilter.Currency_ID.ToString()); //doesnt work

这些示例均无效。

有什么办法吗?

通常,类型化数据集的表中的一行对每个可为空的列都具有IsXYZNull()方法。 你有没有尝试过

bool a = accountFilter.IsCurrency_IDNull();

但是,仅当accountFilter的类型不是DataRow而是来自键入的数据集中专用数据行类型时,此方法才有效。

例如:如果您有一个类型化的数据集,其中包含一个名为Test的表,则将有一个专门的表类TestTable和一个专门的数据行类TestTableRow 如果Test表包含可为空的字段TestField ,则TestTableRow类将包含方法IsTestFieldNull() ,因此您可以调用

bool isnull = testTable[0].IsTestFieldNull();

确定TestTable testTable第一行中的TestField字段是否为null

请注意,以下操作不起作用,因为结果不是TestTableRow类型,而是DataRow类型,因此您必须将其TestTableRowTestTableRow

bool isnull = testTable.Rows[0].IsTestFieldNull(); // Won't compile
bool isnull = ((TestTableRow)testTable.Rows[0]).IsTestFieldNull(); // Will compile because of cast

您可以从中检查吗?

accountFilter.Fields["Currency_ID"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM