为什么reader.GetOrdinal(“FieldName”)会抛出异常?

时间:2011-02-03 14:17:03

标签: ado.net field exists sqldatareader ordinal

当字段不存在时抛出异常:

reader.IsDbNull(reader.GetOrdinal("FieldName")) =>砰

为什么不返回-1?

1 个答案:

答案 0 :(得分:0)

我会在这里猜测。

此方法的常见模式是为列名称调用 GetOrdinal ,然后使用给定的序号调用 GetXXX()方法,这比按列名称搜索更快每一次。

因此,如果出现异常,我们会快速失败,我们不能忽视它。除了异常,我们将尝试找到一个不存在的列,然后尝试按给定的序数找到一个字段(不检查-1,在这种情况下很容易省略),只有在这里我们才会意识到出了问题之前的几步(可能是之前的步骤太多)。