guardandola così su due piedi (anche se non ho più molta dimestichezza con VB), posso azzardare a dire che questa classe è abbastanza "pericolosa".
Mi sembra che serva solo per aprire e chiudere connessioni, che poi sono lasciate pubbliche all'esterno tramite proprietà. Presumo che quindi sarà il codice "utilizzatore" ad usare la connessione per gli scopi prefissati.
Mi permetto di suggerirti un'altra implementazione:
Rendi la connessione PRIVATA, o addrittura toglia!!!! (sarà dichiarata ed usata al momento giusto)
Esponi solo metodi che restituiscono dati, esempio (ti scrivo in C# perché il VB non me lo ricordo):
public DataTable ExecuteSelect(string SQL, params IDataParameter[] procParam) { ... };
public IDataReader ExecuteReader(string SQL, params IDataParameter[] procParam) { ... };
public DataTable ExecuteSP(string SP_Name, params IDataParameter[] procParam) { ... };
public object ExecuteScalar(string sql, params IDataParameter[] procParam) { ... };
e tutte le possibili forme in overloading dei metodi che potrebbero servirti.
Sarà la classe che internamente instanzia la connessione, esegue l'operazione richiesta (reader, datatable, ecc ecc), e subito chiude la connessione.
Ad esempio internamente ogni metodo ipotizzato sopra, potrebbe chiemare una procedura tipo questa:
using(SqlConnection conn = new SqlConnection(connstring))
{
...
...
}
ho usato SqlConnection ma puoi usare la classe che ritieni più giusta.
Nota l'utilizzo di "using", che sfrutta appunto l'interfaccia IDisposable implementata dalla connessione.
In questo modo non dovrà essere la tua classe ad essere disposable.
In questo modo l'utilizzatore non dovrà fare altro che richiedere i dati semplicemente passando la query o il nome della SP.
Ciao
fammi sapere
____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.