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

发布于 2024-10-15 20:52:18 字数 122 浏览 2 评论 0 原文

当字段不存在时,这会引发异常:

reader.IsDbNull(reader.GetOrdinal("FieldName")) =>; bang

为什么不返回-1?

this throws an exception, when the field does not exist:

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

Why not return -1 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

熊抱啵儿 2024-10-22 20:52:18

我会在这里尝试猜测。

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

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

I'll try to guess here.

The common pattern for this method is to call GetOrdinal for column name and then call GetXXX() methods with given ordinal which is faster than do a search by column's name every time.

Therefore in case of exception here we fail fast and we can't ignore it. Wihtout exception we will try to find a column that doesn't exist and then try to find a field by given ordinal (without checking for -1 which is very easy to omit in this case) and only here we will realise that something went wrong few steps before (may be even too many steps before).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文