这question并没有真正回答我的一个问题,即使它已经关闭,我已经思考了一段时间。
之间的区别是什么While reader.Read()
End While
和
If reader.HasRows Then
End If
在哪种情况下应该适用?如果我认为如果在datareader中找到任何记录,它们都会执行,我错了吗?
答案 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并且整个代码块将被跳过。