DataReader blockiert Verbindung

Billie

Erfahrenes Mitglied
Hellas,

also ich erzeuge ein DataReader-Objekt und lies zB alle Namen aus einer Personentabelle. Jetzt möchte ich aber zB zu jeder Person eine neue SQL-Abfrage starten, komme aber dann auf folgendes Problem:

Ein DataReader hat eine typspezifische Eigenschaft, die unbedingt beachtet werden muss: Er blockiert das Verbindungsobjekt. Solange der SqlDataReader geöffnet ist, können keinen anderen Aktionen auf Basis der Verbindung durchgeführt werden, noch nicht einmal das Öffnen eines zweiten SqlDataReaders. Daher sollte die Sperre so schnell wie möglich mit

dr.Close()

aufgehoben werden.

Also wie realiesiere ich jetzt soetwas wie:

PHP:
Dim dr as SqlCLient.DataReader ...

while dr.read
    Dim dr2 as SqlClient.DataRead = new SqlClient.SqlCommand("SELECT...", conn);
    while dr2.read
        'Something
    end while
end while

lg Billie
 

Nico Graichen

Erfahrenes Mitglied
Hi

Vor dem Problem steh ich auch immer. Ich hab es so gelöst, dass ich die Daten in eine Collection zwischen sicher und dann über diese iteriere. So ist der alte DataReader geschlossen und mit dem neuen kann gearbeitet werden.
Bin in der Hinsicht gern für einen anderen besseren Vorschlag offen