Sto facendo un progetto per l'uni su c#, mi servono fare della query, update e delete.

Ho quindi pensato di fare una classe DB per fare la connessione al db, la chiusura e due metodi uno per insert/update e delete l'altro per le query.

Allora nel dettaglio quello che non riesco a capire è quando chiudere il db perchè il metodo che fa le query mi da problemi...

Eccolo nel dettaglio:

public SqlDataReader ExecuteQuery(string sql) {
this.GetConnection(); //metodo per connesione db
SqlCommand cmd = new SqlCommand(sqlQuery, this.connection);
SqlDataReader myReader = null;
try {
myReader = cmd.ExecuteReader();
}
catch (SqlException e) { }
this.CloseDB();//metodo per chiusura db
return myReader;
}
Secondo voi è giusto per ogni query aprire e chiudere il db?
Ed è sensato passare il myreader come ritorno?