从asp.net表单中的标签中的下拉列表选择中显示SQL查询结果

时间:2018-03-06 00:34:21

标签: c# sql asp.net executescalar

我正在尝试在标签中显示SQL查询结果,但它没有显示。用户从下拉列表中选择一个值,标签应填充结果。这是我的代码:

protected void drpEmployeeName_SelectedIndexChanged(object sender, EventArgs e)
{
    String connString = ConfigurationManager.ConnectionStrings["HRPlannerConnectionString1"].ConnectionString;
    SqlConnection conn = new SqlConnection(connString); 
    string result = "SELECT EmployeeName from Employees WHERE EmployeeID= '" + drpEmployeeName.SelectedItem.Value + "'";
    SqlCommand showresult = new SqlCommand(result, conn);
    conn.Open();
    lblEmployee.Text = showresult.ExecuteScalar().ToString();
    conn.Close();
}

请帮忙!

2 个答案:

答案 0 :(得分:0)

"的AutoPostBack"您的下拉列表的属性可能未设置或设置为" false"。将其更改为" true"。另外用户sql命令参数而不是直接将用户选择的值插入到查询中。这将阻止SQL注入。

尝试以下代码

protected void drpEmployeeName_SelectedIndexChanged(object sender, EventArgs e)
        {
            String connString = ConfigurationManager.ConnectionStrings["HRPlannerConnectionString1"].ConnectionString;
            SqlConnection conn = new SqlConnection(connString); 
            string result = "SELECT EmployeeName from Employees WHERE EmployeeID=@empID";

            SqlCommand showresult = new SqlCommand(result, conn);
      showresult.Parameters.AddWithValue("@empID",drpEmployeeName.SelectedItem.Value);
            conn.Open();
            lblEmployee.Text = showresult.ExecuteScalar().ToString();
            conn.Close();
        }

答案 1 :(得分:0)

确保您的函数drpEmployeeName_SelectedIndexChanged已执行。您可以通过在函数内部放置一个调试点来验证它。

如果代码没有开始,你的下拉选择列表可能有auto_postback =“false”。将其更改为true。

或者您的IndexChange过程可能会被无线连接(连接到不同的控件?)。只需删除代码并创建一个新代码。

还要确保您实际上是从数据库返回一个值。