gpt4 book ai didi

c# - MySqlDataReader 为表中的所有行返回相同的值

转载 作者:行者123 更新时间:2023-11-29 12:19:38 26 4
gpt4 key购买 nike

我正在使用 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 jack ·沃克 ...其余专栏2 雷蒙德·韦斯特 ...其余专栏3 安妮·玛丽·约翰逊 ...其余专栏

但是,当我将 放入这样的列表 List 中,然后将列表绑定(bind)到组合框时,下拉列表的所有 3 行都会得到相同的值,如果打印列表的值,我只会得到一个值。我得到的值是第三个:已经很烦人的安妮·玛丽·约翰逊。

最佳答案

您不断覆盖您在该行中分配的一个 st 实例的属性

Student st = new Student();

不要在循环外部分配 st,而是为每次循环迭代分配一个新的

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);
}

关于c# - MySqlDataReader 为表中的所有行返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com