为什么 reader.GetOrdinal("FieldName") 会抛出异常?
当字段不存在时,这会引发异常:
reader.IsDbNull(reader.GetOrdinal("FieldName"))
=>; bang
为什么不返回-1?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
当字段不存在时,这会引发异常:
reader.IsDbNull(reader.GetOrdinal("FieldName"))
=>; bang
为什么不返回-1?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我会在这里尝试猜测。
此方法的常见模式是调用 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).