Non valide tentez de lire lorsqu'aucune donnée n'est présente dans dr

Je suis en train de créer un formulaire de connexion sur mon ASP.NET site web. Actuellement, il y a un problème. Je suis en train d'intégrer les fonctionnalités telles que l'utilisateur connecté a la previlige pour afficher uniquement à son profil. Le code sur la page de connexion est: est-ce

business.clsprofiles obj = new business.clsprofiles();
        Int32 a = obj.logincheck(TextBox3.Text, TextBox4.Text);
        if (a == -1)
        {
            Label1.Text = "Username/Password incorrect";
        }
        else
        {
            Session["cod"]= a;
            Response.Redirect("profile.aspx");
        }

Après la connexion, l'utilisateur est déplacé vers la page où la personne peut voir son profil une fois connecté. Session est l'obtention de la valeur correctement de l'utilisateur connecté en personne à partir de la page d'identification et de réussir à passer à la page suivante. Mais ici, sur cette page de profil, une erreur se produit et je pense qu'il y a problème quelque part dans le grid_bind() méthode ci-dessous

public void grid_bind()
{
    business.clsprofiles obj = new business.clsprofiles();
    List<business.clsprofilesprp> objprp = new List<business.clsprofilesprp>();
    Int32 z = Convert.ToInt32(Session["cod"]);
    objprp = obj.fnd_profiles(z); //This line of code is passing an integer as required but does not get the desired result from the database
    GridView1.DataSource = objprp;
    GridView1.DataBind();
}

Que l'erreur dans la logique métier dit, non valide" tentative de lecture lorsque aucune donnée n'est présente dans dr"

public List<clsprofilesprp> fnd_profiles(Int32 id)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("fndpro", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
SqlDataReader dr = cmd.ExecuteReader();
List<clsprofilesprp> obj = new List<clsprofilesprp>();
while(dr.HasRows)
{
clsprofilesprp k = new clsprofilesprp();
k.id = Convert.ToInt32(dr[0]);//Something wrong here?
k.name = dr[1].ToString();
k.password = dr[2].ToString();
k.description = dr[3].ToString();
k.created = Convert.ToDateTime(dr[4]);
k.modified = Convert.ToDateTime(dr[5]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}lesprp k = new clsprofilesprp();
k.id = Convert.ToInt32(dr[0]);//Something wrong here?
k.name = dr[1].ToString();
k.password = dr[2].ToString();
k.description = dr[3].ToString();
k.created = Convert.ToDateTime(dr[4]);
k.modified = Convert.ToDateTime(dr[5]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;

OriginalL'auteur Cipher | 2011-01-07