SqlConnection(verbindungsstr)

26/03/2010 - 14:46 von Uli Münch | Report spam
Hallo NG,

irgendwo habe ich einen Denkfehler. Ein kleiner Schubs würde mir helfen.

ich habe eine Verbindung

// Verbindung herstellen

verbindungM = new SqlConnection(verbindungsstr);

verbindungM.Open();



bis hierher perfekt!



SqlCommand befehl1 = verbindungM.CreateCommand();
.
.
.
SqlDataReader anzeige1 = befehl1.ExecuteReader();

anzeige1 = null;

befehl1 = null;

SqlCommand befehl2 = verbindungM.CreateCommand();
befehl2.CommandText = "SELECT ."

SqlDataReader anzeige2 = befehl2.ExecuteReader();


Die letzte Zeile verursacht folgende Fehlermeldung:

System.InvalidOperationException wurde nicht behandelt.
Message="Diesem Befehl ist bereits ein geöffneter DataReader zugeordnet, der
zuerst geschlossen werden muss."

Heist das, ich darf jede Verbindung nur einmal nutzen, selbst wenn ich die
SqlCommand und SqlDataReader Objecte auf null setze? Oder was müsste ich
machen?


Ich bedanke mich für jeden Tipp.

mfG
Uliu Münch
 

Lesen sie die antworten

#1 Elmar Boye
26/03/2010 - 14:59 | Warnen spam
Hallo Uli,

"Uli Münch" schrieb ...
SqlDataReader anzeige2 = befehl2.ExecuteReader();

Die letzte Zeile verursacht folgende Fehlermeldung:

System.InvalidOperationException wurde nicht behandelt.
Message="Diesem Befehl ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss."

Heist das, ich darf jede Verbindung nur einmal nutzen, selbst wenn ich die
SqlCommand und SqlDataReader Objecte auf null setze? Oder was müsste ich machen?



Wenn Du nicht MARS aktivierst, darf nur ein DataReader pro Verbindung geöffnet sein.
http://msdn.microsoft.com/de-de/lib...084cz.aspx
"MARS (Multiple Active Result Sets)"

Effizienter ist es aber i. a. ohne MARS zu arbeiten,
und den Code so zu strukturieren, dass nur ein DataReader aktiv ist.
Was z. B. durch Abrufen der Daten in eine Auflistung (oder DataSet)
geschehen kann.
Und wenn Du SQL Server 2000 oder früher verwendest,
ist MARS ohnehin keine Option.

selbst wenn ich die SqlCommand und SqlDataReader Objecte auf null setze?



Ausnullen ist in .NET sinnfrei...

Oder was müsste ich machen?



..., sinnvoller ist hier ein using:
http://msdn.microsoft.com/de-de/lib...98w02.aspx
"using-Anweisung (C#-Referenz)"

Was aber an MARS nichts àndert.

Gruß Elmar

Ähnliche fragen