SqlCommand

24/08/2008 - 12:51 von Daniel Birkmaier | Report spam
Hallo zusammen,

ich führe mit (new SqlCommand(sql1, connection)).ExecuteReader() eine
Abfrage aus und durchlaufe dann in einer while-Schleife alle Zeilen des
zurückgegebenen SqlDataReader-Objektes. In bestimmten Fàllen muss ich dabei
aber noch eine weitere Abfrage für die jeweils aktuelle Zeile ausführen, um
die notwendigen Daten zu erhalten. Diese Daten sind ein einfacher Skalar,
den ich mit Hilfe von (new SqlCommand(sql2, connection)).ExecuteScalar()
abfrage. Allerdings bekomme ich bei dieser zweiten Abfrage immer eine
InvalidOperationException mit folgender Meldung: "Diesem Befehl ist bereits
ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss."
Dabei unterscheiden sich die beiden Befehle sql1 und sql2 und zuvor wurden
wàhrend des jeweils aktuellen Programm-Aufrufs eindeutig noch keine weiteren
SQL-Befehle ausgeführt. Am Ende habe ich es nun einfach mit einem Neustart
des Servers versucht, aber das hat auch nichts gebracht.

Kann mir jemand von euch bitte sagen, woran das Ganze liegt?

Vielen Dank und schöne Grüße

Daniel
 

Lesen sie die antworten

#1 Martin Honnen
24/08/2008 - 13:00 | Warnen spam
Daniel Birkmaier wrote:

Kann mir jemand von euch bitte sagen, woran das Ganze liegt?



Die Doku sagt: "When you use versions of SQL Server before SQL Server
2005, while the SqlDataReader is being used, the associated
SqlConnection is busy serving the SqlDataReader. While in this state, no
other operations can be performed on the SqlConnection other than
closing it. This is the case until the Close method of the SqlDataReader
is called. Starting with SQL Server 2005, the multiple active result set
(MARS) feature allows for multiple actions using the same connection."

Also entweder, so es SQL Server 2005 ist, MARS aktivieren:
http://msdn.microsoft.com/en-us/library/cfa084cz(VS.80).aspx, oder aber
eine zweite Verbindung benutzen.

Oder aber den ganzen Ansatz überdenken.



Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen