un datareader va' aperto e chiuso una volta rilevati i dati

se nella stessa connection c'e' gią un reader aperto ti darą sempre errore dicendoti appunto che e' aperto

non occorre aprire un reader se esegui un ExecuteScalar o un ExecuteNonQuery