Se usi la

return ...

prima della

conn.Close();

è ovvio che la Close non possa mai essere eseguita.

Inoltre, per il reader non leggi con la

reader.Read()

prima di utilizzare i dati.

P.S. E poi perché due volte la Condizioni con = new Condizioni(); ?

P.P.S. Quando posti del codice usa i tag CODE