【问题标题】:Check DBNull in C#在 C# 中检查 DBNull
【发布时间】:2013-01-14 09:19:16
【问题描述】:

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

accountFilter.Currency_ID

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

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

these 的所有示例都不起作用。

有什么办法吗?

【问题讨论】:

  • “不起作用”是什么意思?如果您删除 .ToString() 会怎样?
  • @RichardEv 通过“不起作用”嘿说,“它给出了 DBNull 异常”。

标签: c# dbnull


【解决方案1】:

通常,类型化数据集的表中的一行对于每个可为空的列都有一个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 类型,因此您必须将其转换为TestTableRow

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

【讨论】:

    【解决方案2】:

    你能从这里检查一下吗?

    accountFilter.Fields["Currency_ID"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多