我有一个显示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();
}
}
错误:对象引用未设置为对象的实例。
答案 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();
}