2015-06-20 50 views
0

的功能SqlDataReader.Read MSDN文档说,返回类型:SqlDataReader.Read返回值解释

真,如果有更多的行;否则为false。

我觉得这个提法误导性,因为它表明,Read返回之后,至少1条行可以读取,即下一个Read应该是成功的,但返回false。

然而在现实中,返回类型代表什么人会想到是这样的:“如果行已成功读取,否则为false返回true”。

难道只是我或术语选择简单的错误?

回答

3

MSDN SqlDataReader.Read Method指出Read方法 -

进展SqlDataReader的下一个记录。

,如果有更多的行返回

真实的;否则为false。

当创建SqlDataReader对象时,它不会指向第一条记录。您需要调用Read方法。如果调用成功,SqlDataReader对象将指向第一条记录并返回True。

+0

这个答案其实解释了为什么措辞其实是正确的,这样接受,谢谢:) – Xaser

+0

@usr我接受了这个答案,因为它清楚地向我说,'Read'功能实际上不读取行,但准备阅读器阅读它。 (即,将阅读位置推进到该行)。因此,在该函数之后,如果至少有一行要读取,则返回值为true,这并不一定意味着可以在另一次成功调用Read。所以也许功能名称并不完美... – Xaser

1

这并不表明是读取后的状态。
从字面上看,你可以做出这种解释。
把它看成是有道理的,你观察到的行为。

它是在命令被执行没有在命令之后的状态的时间的条件。

当我从第二读到最后一行的情况是真实的。
我得到最后一行。

现在我在最后一行并发出命令Read
此时没有更多行并且返回值为false。

如果它的表现正如你提到的这不会读的最后一排

while (Reader.Read()) 
{ 
}