0

我有一个显示 ID 的下拉菜单;从数据库中的 RSVP 表和 4 个标签中检索以显示日期、日期、时间和总计。当用户选择 4(Id) 时,标签应显示属于 Id 4 的所有数据。但我的代码不起作用。这是我的代码,希望你能帮助我。非常感谢。

 protected void Page_Load(object sender, EventArgs e)
{
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
     SqlCommand cmd = new SqlCommand("SELECT Date,Day,Time,Total FROM RSVP WHERE Id = @dummy",conn);

      cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = DropDownList5.SelectedItem.Text;

            var dr = cmd.ExecuteReader();
            if (dr.HasRows == false)
            {
                throw new Exception();   
            }
            if (dr.Read())
            {
                Label1.Text = dr[0].ToString();
                Label2.Text = dr[1].ToString();
                Label3.Text = dr[2].ToString();
                Label4.Text = dr[3].ToString();
             }

 } 

错误:对象引用未设置为对象的实例。

4

2 回答 2

2

如果您在此行收到错误

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = DropDownList5.SelectedItem.Text;

那么可能在下拉列表中没有选择任何内容,这就是您收到错误的原因。

您可以在该行之前添加一个检查以查看 SelectedItem 是否为空。

if(DropDownList5.SelectedItem != null)
    cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = DropDownList5.SelectedItem.Text;
于 2012-09-14T06:22:26.793 回答
0
    protected void Page_Load(object sender, EventArgs e)
    {
         SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
         SqlCommand cmd = new SqlCommand("SELECT Date, Day, Time, Total FROM RSVP WHERE Id = @dummy", conn);
         cmd.Parameters.AddWithValue("@dummy", DropDownList5.SelectedItem.Text);

         conn.open();
         var dr = cmd.ExecuteReader();
         if (dr.HasRows == false)
           throw new Exception("No data found!");   
         if (dr.Read())
         {
            Label1.Text = dr[0].ToString();
            Label2.Text = dr[1].ToString();
            Label3.Text = dr[2].ToString();
            Label4.Text = dr[3].ToString();
         }
         conn.close();
     }
于 2012-09-14T06:39:55.540 回答