只是想知道是否有人可以查看嵌套在 if / elseif 语句中的执行语句,以查看我可能出错的地方。
strSQL = "exec sp_CoursesStartingSoon"
objConn = New SqlConnection(strConnection)
objConn.Open()
objCmd = New SqlCommand(strSQL, objConn)
datareader = objCmd.ExecuteReader(0)
datareader.Read()
If (datareader("subjectcode") = "F23") Then
Do While (datareader("subjectcode") = "F23")
html += "<h1>Access to HE</h1>"
html += "<p>" & datareader("name") & "</p>"
html += "<p>" & datareader("level") & "</p>"
Loop
ElseIf (datareader("subjectcode") = "F06") Then
Do While (datareader("subjectcode") = "F06")
html += "<h1>Art and Design</h1>"
html += "<p>" & datareader("name") & "</p>"
html += "<p>" & datareader("level") & "</p>"
Loop
End If
此刻,页面没有加载,似乎陷入了循环,但想检查它是否是我的逻辑(我假设它是这样)。
感谢。
答案 0 :(得分:2)
您没有在:
之后推进datareaderDo While (datareader("subjectcode") = "F23")
因此它不断阅读相同的记录:)
您需要输入:
datareader.Read()
在某个地方的循环中。
如果您匹配任何F23或F06检查,您将保持do while循环。相信我。
编辑:你去吧
strSQL = "exec sp_CoursesStartingSoon"
objConn = New SqlConnection(strConnection)
objConn.Open()
objCmd = New SqlCommand(strSQL, objConn)
datareader = objCmd.ExecuteReader(0)
While datareader.Read()
If (datareader("subjectcode") = "F23") Then
html += "<h1>Access to HE</h1>"
html += "<p>" & datareader("name") & "</p>"
html += "<p>" & datareader("level") & "</p>"
ElseIf (datareader("subjectcode") = "F06") Then
html += "<h1>Art and Design</h1>"
html += "<p>" & datareader("name") & "</p>"
html += "<p>" & datareader("level") & "</p>"
End If
End While
只是解释:
要读取下一条记录,您始终需要执行datareader.Read()。如果没有更多记录,API将返回false,并正确退出循环。然后,您可以检查datareader光标以查看当前记录是否包含您要查找的字符串。然后,当代码再次循环时,datareader.Read()将为您获取下一条记录。