sql*_*ild 0 .net c# list dynamic winforms
我正在从我的数据库表中检索4个字段.现在我想将它们添加到动态列表<>.如何将这些添加到列表中.我试过这个:
public class myclass
{
public string StdDetails, StdAdderID;
public DateTime StdAddedDate, StdAddedTime;
}
public void buttonClick()
{
List<myclass> StdList = new List<myclass>();
myclass mc = new myclass();
OdbcCommand readStd =
new OdbcCommand("SELECT StdDetails, StdAddedDate," +
"StdAddedTime, StdAdderID" +
"FROM Students", Conn);
OdbcDataReader readStdreader =
readStd.ExecuteReader(CommandBehavior.SingleRow);
while (readStdreader .Read())
{
mc.StdDetails = readStdreader.GetString(0);
mc.StdDetails = readStdreader.GetString(3);
mc.StdDetails = readStdreader.GetDate(1);
mc.StdDetails = readStdreader.GetDateTime(2);
StdList.Add(mc);
}
MessageBox.Show(StdList[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)
在消息框中,不显示该值?怎么做.请帮助
//为TYPOS服务:
替换这3行:
mc.StdDetails = readStdreader.GetString(3);
mc.StdDetails = readStdreader.GetDate(1);
mc.StdDetails = readStdreader.GetDateTime(2);
Run Code Online (Sandbox Code Playgroud)
用:
mc.StdAddedDate= readStdreader.GetString(3);
mc.StdAdderID= readStdreader.GetDate(1);
mc.StdAddedTime= readStdreader.GetDateTime(2);
Run Code Online (Sandbox Code Playgroud)
你只是建立一个单一实例的myclass,所以你的名单将是全同一个对象的引用.你想要这个:
while (readStdreader.Read())
{
myclass mc = new myclass();
mc.StdDetails = readStdreader.GetString(0);
mc.StdAdderID = readStdreader.GetString(3);
mc.StdAddedDate= readStdreader.GetDate(1);
mc.StdAddedTime = readStdreader.GetDateTime(2);
StdList.Add(mc);
}
Run Code Online (Sandbox Code Playgroud)
请注意我如何更改已分配的属性 - 您发布的代码尝试StdDetails重复分配.
您还没有覆盖ToString的myclass,所以通话ToString()是不会给你什么特别有用.
另外:
std这里的意思是什么?你几乎把它用于所有......)using语句以可靠的方式关闭读者,命令,连接等.