在C#中检查DBNull

时间:2013-01-30 14:11:57

标签: c# dbnull

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

accountFilter.Currency_ID

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

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

these个例子不起作用。

任何解决方案?

2 个答案:

答案 0 :(得分:4)

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

bool a = accountFilter.IsCurrency_IDNull();

但是,只有当accountFilter不是DataRow类型而是来自您键入的数据集的专用数据行类型时,这才有效。

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

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

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

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

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

答案 1 :(得分:0)

你能从中查看吗?

accountFilter.Fields["Currency_ID"]