Non opteri per una classe dove tutte le volte devi aprire/chiudere la connessione con dei metodi appositi.
Potresti creare una classe dove ad es. un metodo ti restituisce un DataSet popolato in base alla query SQL che gli hai passato come parametro. Nella classe puoi aprire / popolare il dataset / chiudere la connessione / restituire il DataSet. Avrai a disposizione i dati in memoria.
Stessa cosa per un ...DataReader ma in questo caso è necessario utilizzare il parametro CommandBehavior.CloseConnection al momento della creazione del DataReader. Questo fa si che la connessione al db venga chiusa nel momento (fuori dalla classe) in cui chiudi il DataReader.
A questo punto.. dalle tue pagine potresti avere una cosa del genere:
DataSet ds = miaClasse.GetDataSet("SELECT * FROM tabella");
SqlDataReader dr = miaClasse.GetDataReader("SELECT * FROM tabella");
In questo modo hai codice + pulito nelle tue pagine e non devi occuparti ogni volta di aprire/chiudere connessioni (ma ricordati di chiudere sempre il DataReader con "dr.Close();").
![]()