Um ein ADO.NET-Objekt sowie die von ihm belegten Ressourcen aufzuräumen, nutzt man die beiden Methoden Close und Dispose, die diese Objekte bereitstellen. Diese Methoden sollten nur verwendet werden, wenn das fragliche Objekt ordnungsgemäß erstellt und geöffnet wurde. Außerdem sollte man den Code zum Aufräumen in einem Try-Catch-Finally-Block einschließen, um sicherzustellen, dass Fehler korrekt behandelt werden.
Lassen Sie uns einen Blick auf eine Auswahl von ADO.NET-Klassen werfen, die spezifisch für den SQL Server sind, um zu sehen, welche Methoden zur Freigabe von Systemressourcen verwendet werden können:
- SqlConnection – Sobald eine Verbindung mit der Open-Methode hergestellt wurde, kappt die Methode Close die Datenbankverbindung, und Dispose stellt die verwendeten Systemressourcen der Garbage Collection zur Verfügung. Ein Hinweis: Die Verbindung muss tatsächlich offen sein, ehe man die Close-Methode aufruft. Man kann prüfen, ob eine Verbindung offen ist, indem man die State-Eigenschaft der Verbindungsklasse untersucht.
- SqlCommand – Die Command-Klasse verfügt über keine Close-Methode, wohl aber über eine Dispose-Methode um Systemressourcen der Garbage Collection zur Verfügung zu stellen.
- SqlDataReader – Die DataReader-Klasse enthält eine Close-Methode, um benutzte Ressourcen wieder freizugeben.
- SqlDataAdapter – Die DataAdapter-Klasse enthält eine Dispose-Methode, um Ressourcen dem System wieder zur Verfügung zu stellen.
Dies ist nur ein kleiner Ausschnitt aller ADO.NET-Klassen, bietet er einen Einblick, wie von Objekten verwendete Ressourcen ordnungsgemäß wieder freigegeben werden. Der Code in Listing B erweitert das Beispiel aus Listing A um die notwendigen Aufräumarbeiten. Der Aufräum-Code wird in einen Finally-Codeblock platziert, um sicherzustellen, dass der Code ausgeführt, egal ob eine Ausnahme auftritt oder nicht.
Beachten Sie, dass ich die Existenz der Objekte überprüfe, indem ich sie mit Nothing vergleiche, bevor ich versuche, irgendwelche Methoden auf das Objekt anzuwenden. Außerdem stelle ich sicher, dass die Connection- und DataReader-Objekte tatsächlich offen sind, bevor ich versuche, sie zu schließen. Auf diese Weise weiß ich, dass im Finally-Block keine Fehler auftreten werden. Der Code in Listing B nutzt die Möglichkeiten der ADO.NET-Klassen voll aus und gibt die Ressourcen so schnell wie möglich an das System zurück.
Aufräumarbeiten
Der Entwicklungsprozess sollte zusammen mit Rechner- und System-Tests alle eventuellen Probleme mit ADO.NET-Code aufdecken. Außerdem können Datenbankadministratoren mögliche Probleme feststellen, indem sie die Anzahl der offenen Datenbankverbindungen überwachen, denn diese werden im Laufe der Zeit zunehmen, falls Verbindungen nicht durch das Programm ordnungsgemäß geschlossen werden. Wenn man seine Verbindungen ständig offen lässt, kann man sicher sein, sich rasch Ärger mit dem Datenbankadministrator einzuhandeln.
Neueste Kommentare
Noch keine Kommentare zu Mehr Ordnung in ADO.NET für bessere Performance
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.