Ich versuche ein Anmeldeformular auf meiner ASP.NET-Website zu erstellen. Derzeit gibt es ein Problem. Ich versuche, die Funktionalität so einzubauen, dass der eingeloggte Benutzer das Vorrecht hat, nur sein Profil zu sehen. Der Code auf der Login-Seite ist dies:.Ungültiger Leseversuch, wenn keine Daten in dr vorhanden sind
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");
}
Nach der Anmeldung wird der Benutzer auf der Seite bewegt, wo die Person sein Profil einmal angemeldet anzeigen kann Session wird persönlich den Wert korrekt des angemeldeten Erhalt von die Login-Seite und übertrage sie erfolgreich auf die nächste Seite. Aber hier auf dieser Profilseite ein Fehler auftritt, und ich denke, es gibt Problem irgendwo in der grid_bind()
Methode unter
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();
}
Da der Fehler in Business-Logik sagt, „ungültig Versuch zu lesen, wenn keine Daten vorhanden in 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;
möglich Duplikat von [Ungültiger Leseversuch, wenn keine Daten vorhanden sind] (http://stackoverflow.com/questions/1147615/invalid-attempt-to-read-when-no-data-is-present) –