Kiedy wywołujesz SqlCommand.ExecuteReader() , SqlDataReader które daje, jest początkowo pozycjonowane przed pierwszy rekord. Musisz wywołać SqlDataReader.Read() aby przejść do pierwszego rekordu przed próbą uzyskania dostępu do jakichkolwiek danych. SqlDataReader.Read() zwraca true czy był w stanie przejść do pierwszego rekordu; zwraca false jeśli nie ma żadnych zapisów.
if (sqlDataReader.Read())
{
String roles = sqlDataReader[0].ToString();
return roles;
}
else
{
// The user name or password is incorrect; return something else or throw an exception.
}