虽然reader.read循环里面而reader2.read循环?

时间:2015-10-18 07:00:52

标签: sql vb.net

如何在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的值存储在一个数组中,但我不知道该怎么做。提前谢谢

1 个答案:

答案 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