如果我在引用不返回行集的存储过程的“SqlCommand”上调用“ExecuteReader”方法,会发生什么情况?
我有一个SqlCommand
,它可能返回零个或多个行集。如果 SqlCommand
偶然返回零行集*,并且我调用其 ExecuteReader
方法,会发生什么情况?我是否收到无法读取的 SqlDataReader
,或者是否收到异常?
以防万一:零行集与恰好包含零行的行集不同。
I have a SqlCommand
which may return zero or more rowsets. What happens if, by chance, the SqlCommand
would return exactly zero rowsets* and I invoke its ExecuteReader
method? Do I get a SqlDataReader
that cannot be read, or do I get an exception?
Just in case: Zero rowsets is not the same thing as one rowset containing exactly zero rows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果没有行集,您的
reader.FieldCount
将为零。如果您使用数据集而不是读取器,您将获得没有行集的空数据集。Your
reader.FieldCount
will be zero for no rowset. If you use a dataset instead of a reader, you will get a null dataset for no rowset.SqlDataReader.Read()
以及HasRows
将返回false
:SqlDataReader.Read()
as well asHasRows
will returnfalse
:您仍然应该收到一个 SqlDataReader 对象。当您尝试:
...您将简单地“失败”,因为
Read()
将返回false
。You should still receive an SqlDataReader object. when you try:
... you will simply 'fall through' as
Read()
will returnfalse
.