In Visual Basic wird normalerweise die ADO.NET-Bibliothek verwendet, um mit Datenbanken zu interagieren. Die wichtigsten Klassen für die Verbindung und den Zugriff auf Daten:
Richtige Verbindung und Schließung der Verbindung:
Imports System.Data.SqlClient Using connection As New SqlConnection("connection_string_here") connection.Open() Using command As New SqlCommand("SELECT * FROM Users", connection) Using reader As SqlDataReader = command.ExecuteReader() While reader.Read() Console.WriteLine(reader("Username")) End While End Using ' Schließt den Reader End Using End Using ' Schließt die Verbindung automatisch
Die Verwendung des Using-Blocks garantiert das automatische Schließen der Verbindung, selbst wenn Fehler auftreten. Dies ist entscheidend, um das Austreten von Verbindungen zu verhindern.
Was ist der Unterschied zwischen Dispose() und Close() für SqlConnection, und müssen beide Methoden aufgerufen werden?
Antwort:
Die Methode Close() schließt die Verbindung zur Datenbank, während Dispose() alle mit dem Verbindungsobjekt verbundenen Ressourcen freigibt. Der Aufruf von Dispose() umfasst den Aufruf von Close(). Daher, wenn Using verwendet wird, wird Dispose() automatisch aufgerufen und ein separater Aufruf von Close() ist nicht erforderlich.
connection.Close() ' Schließt die Verbindung, aber das Objekt existiert weiterhin connection.Dispose() ' Gibt alle Ressourcen frei (es wird empfohlen, über Using aufzurufen)
Geschichte
Im Projekt gab es große Verzögerungen und Fehler beim Verbinden mit der Datenbank: Verbindungen wurden manuell geöffnet, aber das Schließen wurde vergessen, was zu einem Erschöpfen des Verbindungspools führte. Lösung: Einführung des Using-Blocks.
Geschichte
Ein Entwickler rief fälschlicherweise nur Close() auf, und das SqlConnection-Objekt blieb im Speicher "hängen". Langfristig führte dies zu Ressourcenlecks und unvorhersehbarem Verhalten der Anwendung.
Geschichte
Statt mit SqlConnection wurde OleDbConnection zur Arbeit mit SQL Server verwendet, weil nicht bekannt war, dass dies weniger effizient ist und zu Leistungs- und Kompatibilitätsproblemen führen kann. Nach dem Wechsel zu SqlConnection stieg die Leistung um 30%.