读取datareader与while循环或if语句之间的区别

时间:2014-08-19 11:19:32

标签: vb.net if-statement while-loop

question并没有真正回答我的一个问题,即使它已经关闭,我已经思考了一段时间。

之间的区别是什么
While reader.Read()
End While

If reader.HasRows Then
End If

在哪种情况下应该适用?如果我认为如果在datareader中找到任何记录,它们都会执行,我错了吗?

3 个答案:

答案 0 :(得分:1)

将在Reader中为每一行执行While...End While块中的代码,而If...End If块中的代码最多只执行一次,而不管读者可能拥有多少行。

因此,当您想要为阅读器中的每一行重复某些操作时,您将使用While Reader.Read()语句。

If Reader.HasRows Then...通常在您的阅读器只返回一行或没有行时使用,并且您希望根据该行执行某些操作。

e.g。

If Reader.HasRows Then
    MessageBox.Show("Record Found!")
Else
    MessageBox.Show("The record was not Found!")
End If

答案 1 :(得分:0)

While reader.Read() End While

while循环读取每一行并执行。

If reader.HasRows Then End If

如果读者有行,则只有代码块有效。

while循环使用读取所有行。但是,如果条件只用于检查读者是否有行。如果有行,那么做一些其他的工作。

答案 2 :(得分:0)

简单地说,是的,你的假设是错误的。

正如您所料,While代码块将对返回结果集中的每一行执行一次 - 当结果集中没有行时,Read()指令返回false

但是,If代码块只执行一次,并且只有在结果集中有行时才会执行。

在大多数情况下,While循环将是您要使用的循环 - 即使查询中没有返回任何行,因为Read()调用将返回false并且整个代码块将被跳过。