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)