In Visual Basic, per interagire con i database si utilizza generalmente la libreria ADO.NET. Le classi chiave per la connessione e l'accesso ai dati sono:
Connessione corretta e chiusura della connessione:
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 ' Chiude il reader End Using End Using ' Chiude automaticamente la connection
La pratica di utilizzare il blocco Using garantisce la chiusura automatica della connessione, anche in caso di errori. Questo è fondamentale per prevenire perdite di connessione.
Qual è la differenza tra Dispose() e Close() per SqlConnection, e bisogna invocare entrambi i metodi?
Risposta:
Il metodo Close() chiude la connessione al database, mentre Dispose() libera tutte le risorse associate all'oggetto connessione. La chiamata a Dispose() include la chiamata a Close(). Pertanto, se si utilizza Using, Dispose() viene chiamato automaticamente e non è necessario un invocazione separata di Close().
connection.Close() ' Chiude la connessione, ma l'oggetto esiste ancora connection.Dispose() ' Libera tutte le risorse (si consiglia di invocarlo tramite Using)
Storia
Nel progetto ci sono stati grandi ritardi e errori nella connessione al database: le connessioni venivano aperte manualmente, ma dimenticate di chiudere, portando all'esaurimento del pool di connessioni. Soluzione: introduzione del blocco Using.
Storia
Uno sviluppatore ha erroneamente chiamato solo Close(), mentre l'oggetto SqlConnection rimaneva "appeso" in memoria. Questo ha portato a perdite di risorse e comportamenti imprevedibili dell'applicazione a lungo termine.
Storia
Invece di lavorare con SqlConnection, si utilizzava OleDbConnection per lavorare con SQL Server a causa dell'ignoranza che questo fosse meno efficiente e potesse causare problemi di prestazioni e compatibilità. Dopo il passaggio a SqlConnection, le prestazioni sono aumentate del 30%.