如何在reader2.read循环中执行一段时间的reader.read循环?这是我的代码:
While reader2.Read
Dim reader As SqlDataReader
a = "SELECT * FROM PEOPLE WHERE ID='" & reader2("ID") & "'"
sqlcmd = New SqlCommand(a, dbcon)
reader = sqlcmd.ExecuteReader
While reader.Read
MsgBox(reader("FNAME"))
End While
End While
这可能吗?我尝试了但是说我需要先关闭读者。我想也许有可能我将reader2的值存储在一个数组中,但我不知道该怎么做。提前谢谢
答案 0 :(得分:0)
你应该总是避免在循环内部进行DBMS调用,因为它们非常昂贵。它们导致大量网络往返并减慢程序的顺序执行速度。
您可以将第一个查询中的ID存储到数组中,如下所示
Dim IDs_list As New List(Of Integer)
While reader2.Read
IDs_list.Add(reader2("ID"))
End While
拥有所有ID后,您可以使用SQL in语句在单个查询中查看所有人的数据。您可以使用以下代码加入所有ID
String.Join(",", list.ToArray)
之后,只需运行查询并使用上面的代码获取结果,如下所示
Dim reader As SqlDataReader
a = "SELECT * FROM PEOPLE WHERE ID in (" & String.Join(",", list.ToArray) & ")"
sqlcmd = New SqlCommand(a, dbcon)
reader = sqlcmd.ExecuteReader
While reader.Read
MsgBox(reader("FNAME"))
End While