Je voulais lire toutes les données d’une table (contenant 3 lignes) et append toutes les données dans une collection générique.
Le code affiché ci-dessous fonctionne, mais seule la dernière ligne est affichée 3 fois dans gridview.Can You help me.Am un débutant
protected void Page_Load(object sender, EventArgs e) { List listid = new List(); Student stud = new Student(); SqlConnection con = new SqlConnection("........"); ssortingng sql = "select * from StudentInfo"; con.Open(); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { stud.Studid = Convert.ToInt32(dr["StudId"]); stud.StudName = dr["StudName"].ToSsortingng(); stud.StudentDept = dr["StudentDept"].ToSsortingng(); listid.Add(stud); } GridView1.DataSource = listid; GridView1.DataBind(); } public class Student { private int studid; public int Studid { get { return studid; } set { studid = value; } } private ssortingng studName; public ssortingng StudName { get { return studName; } set { studName = value; } } private ssortingng studentDept; public ssortingng StudentDept { get { return studentDept; } set { studentDept = value; } }
La sortie est comme ça:
Vous devez instancier votre object dans la boucle while
Sinon, vous aurez les mêmes données dans la collection
Donc, le code devrait être
protected void Page_Load(object sender, EventArgs e) { List listid = new List (); SqlConnection con = new SqlConnection("........"); ssortingng sql = "select * from StudentInfo"; con.Open(); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Student stud = new Student(); stud.Studid = Convert.ToInt32(dr["StudId"]); stud.StudName = dr["StudName"].ToSsortingng(); stud.StudentDept = dr["StudentDept"].ToSsortingng(); listid.Add(stud); } GridView1.DataSource = listid; GridView1.DataBind(); }
En outre, il n’est pas recommandé d’utiliser un lecteur de données ou une connexion directe
Vous devriez utiliser using
statement.
using(SqlConnection con = new SqlConnection("connection ssortingng")) { con.Open(); using(SqlCommand cmd = new SqlCommand("SELECT * FROM SomeTable", connection)) { using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader != null) { while (reader.Read()) { //do something } } } // reader closed and disposed up here } // command disposed here } //connection closed and disposed here
Dans la boucle DataReader While, vous instanciez un nouvel étudiant pour chaque ligne de la table de firebase database:
while (dr.Read()) { var stud = new Student(); stud.Studid = Convert.ToInt32(dr["StudId"]); stud.StudName = dr["StudName"].ToSsortingng(); stud.StudentDept = dr["StudentDept"].ToSsortingng(); listid.Add(stud); }