Einen SqlDataReader zurückgeben

7

Ich habe diesen Code:

%Vor%

Wie verweise ich darauf?

Ich habe das versucht, aber es funktioniert nicht.

%Vor%

Wie würde ich auch vom Leser lesen?

%Vor%

Bearbeiten :

Ich erhalte jetzt den folgenden Fehler:

  

Ausnahmedetails: System.NullReferenceException: Objektreferenz nicht   auf eine Instanz eines Objekts festgelegt.

Hier ist der aktualisierte Code:

%Vor%     
James Wilson 20.04.2012, 19:40
quelle

5 Antworten

15

Das Problem ist, dass das Verlassen der Funktion (über die return-Anweisung) Sie aus den using -Blöcken herausschleudert und somit die von Ihnen verwendeten SqlDataReader und SqlConnections entfernt werden. Versuchen Sie, die Funktionssignatur wie folgt zu ändern, um das Problem zu umgehen:

%Vor%

und aktualisieren Sie dann die Mitte der Funktion wie folgt:

%Vor%

Für das Finale "Wie lese ich daraus?" Teil könnte es so aussehen:

%Vor%     
Joel Coehoorn 20.04.2012, 19:45
quelle
6

Fügen Sie Ihre Verbindungszeichenfolge zum AppSettings-Abschnitt in app.config oder web.config hinzu.

%Vor%

// Funktion zum Zurückgeben von SqlDataReader-Ergebnissen

%Vor%

Um die Funktion zu verwenden:

%Vor%     
A Ghazal 22.02.2014 00:19
quelle
1

Ich glaube diese StackOverflow-Antwort verdient Erwähnung. Eine sehr einfache und angenehm zu bedienende Lösung.

    
Timo 09.10.2016 11:23
quelle
0

Das Problem besteht darin, dass Sie die Datenbankverbindung innerhalb Ihrer Methode erstellen.

Wenn Sie Datenbankressourcen zwischen vielen Methoden freigeben möchten, verschieben Sie SqlConnection außerhalb dieses Bereichs.

Auf diese Weise können Sie den Reader von dieser Funktion zurückgeben und er wird beibehalten.

Auch nicht. Lesen () innerhalb dieser Funktion, nur das Objekt zurückgeben.

    
EuroMarkus 11.05.2013 19:16
quelle
-1

Laut Definition soll eine using Anweisung ein Objekt nach dem Aufruf des Objekts entsortieren.

Nachdem Sie Ihren Datenleser zurückgegeben haben, wird er daher entsorgt.

    
jp2code 20.04.2012 19:47
quelle

Tags und Links