我正在使用MySql和C#。 我有这段代码:
public List<Student> selectStudent()
{
List<Student> stud = new List<Student>();
Student st = new Student();
MySqlConnection msConn = new MySqlConnection(connStr);
MySqlDataReader msRdr = null; ;
try
{
msConn.Open();
MySqlCommand msComm = new MySqlCommand();
msComm.Connection = msConn;
msComm.CommandText = "SELECT * FROM Student";
msRdr = msComm.ExecuteReader();
while (msRdr.Read())
{
st.ID = msRdr.GetInt32(0);
st.Name = msRdr.GetString(1);
st.Address = msRdr.GetString(3);
st.Birthdate = msRdr.GetDateTime(2);
stud.Add(st);
}
}
catch (MySqlException e) { }
finally {
msRdr.Close();
msConn.Close(); };
return stud;
}
我的问题是,在数据表中,我有3行,例如 1 Jake Walker ......剩下的专栏 2 Raymond West ......剩下的专栏 3 Anne Marie Johnson ......剩下的专栏
但是当我把这个列表放入List然后将列表绑定到组合框时,我得到了下拉列表中所有3行的相同值,如果我打印列表的值,我只得到一个值。我得到的价值是第三个:已经烦人的安妮玛丽约翰逊。
答案 0 :(得分:1)
您将继续覆盖在行
中分配的st
个实例的属性
Student st = new Student();
不是在循环之外分配st
,而是为每个循环迭代分配一个新的<{1}}
while (msRdr.Read())
{
Student st = new Student();
st.ID = msRdr.GetInt32(0);
st.Name = msRdr.GetString(1);
st.Address = msRdr.GetString(3);
st.Birthdate = msRdr.GetDateTime(2);
stud.Add(st);
}