Diesem Befehl ist bereits ein offener DataReader zugeordnet, der zuerst geschlossen werden muss

7

Dies ist der Code, den ich habe.

%Vor%     
Marcus3329 26.01.2012, 18:38
quelle

4 Antworten

9

Dein Problem ist, dass du anscheinend eine Instanz von m_ConStr hast; Wenn die Methode gleichzeitig aufgerufen wird, kann nur einer von ihnen die Verbindung verwenden, und der andere wird mit der Ausnahme, die Sie erhalten, fehlschlagen.

Verwenden Sie stattdessen dieses Muster:

%Vor%

Mit anderen Worten, definieren Sie keine Verbindung als globale Variable für die Klasse.

    
Icarus 26.01.2012, 18:44
quelle
5

All Ihren kurzlebigen IDisposable Objekten fehlt ein "using". Mit der Erweiterung ist es möglich, dass Sie etwas wie:

getan haben %Vor%

Aber das schließt / schließt den Leser nicht. Wenn dies der Fall ist, fügen Sie "using" hinzu:

%Vor%

Was den Leser verschließt, egal wie wir ausgehen. Kommandos, Verbindungen, Leser und Transaktionen sind alle wegwerfbar und sollten normalerweise "benutzen" verwenden.

    
Marc Gravell 26.01.2012 18:56
quelle
5

Ich schlage vor, Sie können block verwenden, um eine ordnungsgemäße Entsorgung von sqlconnection sicherzustellen.

%Vor%

Andererseits können Sie auch die MARS-Eigenschaft in Ihrer Verbindung festlegen, wenn Sie sie benötigen.

%Vor%     
Ravi Gadag 26.01.2012 18:49
quelle
1

Sie versuchen, mehrere Aktivitäts-Ergebnissätze auszuführen (aka MARS ).

Zwei mögliche Lösungen kommen mir in den Sinn:

  1. Öffnen Sie eine neue Verbindung in Ihrem GetContractResultSetByLead
  2. Aktivieren Sie MARS auf Ihrem Datenbankserver (im obigen Link beschrieben).
RQDQ 26.01.2012 18:44
quelle

Tags und Links