[英]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.