Mehr Ordnung in ADO.NET für bessere Performance

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.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

4 Tagen ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

4 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

4 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

4 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

4 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

4 Tagen ago