Aux futurs lecteurs de cette question :notez que le problème s'est produit parce que l'OP renvoyait trop de colonnes dans la requête. Voir les commentaires sous cette réponse.
Je ne sais pas trop pourquoi cela se produit, mais vous n'avez vraiment besoin de vérifier les lignes qu'une seule fois, pas deux, et le Read()
la méthode le fait déjà.
Donc, tout ce dont vous avez vraiment besoin est
while (reader.Read())
{
// Do your thing
}