2015-10-18 168 views
-1

如何在reader2.read循環內部執行reader.read循環?這裏是我的代碼:while reader.read loop while inside reader2.read loop?

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

您應該始終避免循環內的DBMS調用,因爲它們非常昂貴。它們會導致大量網絡往返,並會減慢程序的順序執行速度。

您可以從第一次查詢的ID存儲到一個數組如下

Dim IDs_list As New List(Of Integer) 
While reader2.Read 
IDs_list.Add(reader2("ID")) 
End While 

一旦你可以將所有的人在單個查詢數據使用SQL語句的所有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 
+0

我不跑了IDE這段代碼加入所有的ID,所以請修復你自己的錯字語法錯誤。 –

+0

我們可以在每個循環中使用結果嗎?因爲每個結果ID在一個表中有多個值。 –

+0

第二次查詢來自人?,是的,你可以循環這些以及 –