al momento mi sfugge il misterioso motivo (probabilmente il bind messo prima fa scorrere il datareader alla fine, "consumandolo"), ma con un semplice debug è presto spiegato.
piuttosto, non capisco lo scopo del tuo codice.
Sto facendo degli esercizi...ovvio che ti sfugga lo scopo...
~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.