Sie können dieselbe Verbindung für jede von ihnen verwenden, solange Sie nicht versuchen, mehrere Abfragen gleichzeitig auf derselben Verbindung von verschiedenen Threads auszuführen.
Was den Datenleser betrifft, verwenden Sie den Reader nicht wirklich neu. Jeder Aufruf von ExecuteReader
gibt eine neue Instanz eines neuen Readers zurück. Sie verwenden nur die Variable, die den Verweis auf den Reader beibehält . Hier liegt ein Problem, Sie schließen nur explizit den letzten Leser und lassen den ersten zu einem späteren Zeitpunkt GC'd.
Sie können den Befehl auch wiederverwenden, aber denken Sie daran, wenn Sie Parameter usw. angeben, müssen Sie sie für die nächste Abfrage löschen, es sei denn, sie gelten auch für die nächste Abfrage.
Sie sollten try/finally
blocks verwenden, um sicherzustellen, dass Sie die Ressourcen bereinigen, oder hier ist eine kurze Änderung an Ihrem Code, um using
-Anweisungen zu verwenden, um eine Ressourcenbereinigung zu gewährleisten, selbst wenn eine Ausnahme den Rest verhindert des Codes aus der Ausführung.
Hinweis: GetTheConnection
ist nur eine Platzhalterfunktion für jeden Mechanismus, den Sie zum Abrufen Ihrer Verbindungsinstanz verwenden.
Ich benutze im Allgemeinen Adapter, so dass ich in den Details des Lesers verrostet bin, aber ich denke, dass Sie auf dem richtigen Weg sind.
Eine Anmerkung in Ihrem Code ist, dass jeder Aufruf von ExecuteReader
einen neuen Datenleser generieren sollte. Möglicherweise verwenden Sie den Variablennamen erneut, aber der Verweis auf den vorhandenen Reader wird verworfen und bei jedem Aufruf durch einen neuen ersetzt. Schließen Sie den vorherigen Reader, bevor Sie ExecuteReader verwenden, um einen neuen Reader zu erhalten.
Tags und Links .net c# sqldatareader