[英]listbox not showing any results
我希望Visual Studio中的列表框列出课程表中的课程(来自数据库),应用程序运行良好,但listBox仍然为空,这是我正在使用的代码:
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string sqlcon = "Data Source = localhost; Persist Security Info = True; User ID = localhost; Password = ****; Unicode = True";
OracleConnection con = new OracleConnection(sqlcon);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "select coursename from course";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
while(dr.Read())
{
ListBox1.Items.Add(dr.GetString(1));
}
}
您的代码中至少有三个错误和一些逻辑问题。
错误优先:
您调用GetString(1),但只从表中检索课程名称,这将为索引超出范围提供例外。 数组从索引零开始,因此要获取课程名,您需要GetString(0)
// Not needed, let the loop run // dr.Read(); while(dr.Read()) { // The first column is at index zero ListBox1.Items.Add(dr.GetString(0)); }
最后是逻辑问题。 似乎您使用SelectedIndexChanged事件来填充触发SelectedIndexChanged的同一列表的项目。 这似乎是不合逻辑的,因为您已经在该列表中有项目并选择一个项目触发了该事件。 这段代码应该在其他地方运行(Load事件?)您要在这里做什么? 无论如何,如果您确实想要保留此代码,则至少应在从数据库加载项目之前清除Items集合,否则,在每个SelectedIndexChanged处添加与已加载的项目相同的另一组项目。
// Before filling the items clear the previous ones
listBox1.Items.Clear();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.