se tu hai un solo record questo ciclo ti dà sempre false, perchè nel momento in cui fai il while ti sposti al primo record, e la if restituisce false.
La If va messa prima di un ciclo Do...While,
e il ramo Else scrive "User errata".
Inoltre restituendo il metodo Read un boolean, non è necessario confrontarlo.
Es.:
While (Reader.Read()) equivale a
While (Reader.Read()=true)
e If (!Reader.Read()) equivale a
If (Reader.Read()=false)