从数据库中检索时未显示数据

时间:2012-09-14 06:14:41

标签: c# asp.net sql

我有一个显示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();
             }

 } 

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

2 个答案:

答案 0 :(得分:2)

如果您收到此行的错误

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

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

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

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

答案 1 :(得分: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();
     }