下拉列表数据不会插入查询中

时间:2012-11-01 11:33:32

标签: c# asp.net

我选择要在查询中插入的DropDownList值,但该值在查询中保持空白,并且由于条件中没有任何结果结果的空值。我做了不同的技巧,但仍然是空的

if (chkBoxChanl.Checked)
{
    sql += " and channelName = '" + ddlChannel.Text + "' ";
}
if (chkBoxDate.Checked)
{
    sql += " and transmissionDate_ between '" + tbFrom.Text + "' and '" + tbTo.Text + "'";
}
if (chkBoxProgrm.Checked)
{
    sql += " and programName ='" + ddlProgram.Text + "'";
}
if (chkBoxParty.Checked)
{
    sql += " and partiesName like '%" + ddlParty.SelectedValue + "%'";
}
if (chkBoxPerson.Checked)
{
    sql += " and personsName like '%" + ddlPerson.SelectedItem + "%'";
}
if (chkBoxProvince.Checked)
{
    sql += " and ProvinceName like '%" + ddlProvince.SelectedItem + "%'";
}
if (chkBoxCity.Checked)
{
    sql += " and CityName like '%" + ddlCity.Text + "%'";
}

  • ddlProgram.Text
  • ddlProvince.SelectedItem
  • ddlPerson.SelectedValue 选定的DropDownList值在查询中显示为空。

如何在查询中添加所选值?请帮帮我!

我检查当我选择第一次加载时出现的下拉列表值,然后按下搜索按钮下拉列表值为空后2md时,当我按下搜索按钮时,它首先运行Page_Load函数,如果执行(!IspostBack),则选择所有下拉列表值变为空,导致where子句中的值为空。现在我希望当我按下搜索按钮时,下拉列表值仍然被加载,这将解决问题成为enpty下拉列表值。请进一步指导我

3 个答案:

答案 0 :(得分:1)

首先:您不应该以这种方式将参数连接到查询。您将自己暴露于SQL注入攻击。

抱歉,对stackoverflow不熟悉。没有看到评论按钮

programName =' mytext' OR 1 = 1; 
DROP Database

评论其他任何内容。

答案 1 :(得分:1)

您无法直接在sql查询中连接输入字段的值。它使您的系统容易受到Sql Injection的攻击。在运行此类SQL查询之前,您至少应该对从这些字段中检索的内容进行编码。在继续之前你read this是非常重要的。

仔细阅读以上内容后,您可以在下拉列表中获取所选项目的值。你这样做:

yourDropDown.SelectedItem.Value

如果它没有返回值,那可能是因为您没有在下拉列表中设置任何值。请记住根据您的数据源进行设置:

yourDropDown.DataValueField = "TheSourceFieldContainingTheValue";

答案 2 :(得分:0)

构建你的SQL查询:

public DataSet ExecuteDataSet(string text, SqlParameter[] paramList)
        {
            using (SqlCommand sqlCommand = new SqlCommand(text, sqlConnection))
            {
                if (paramList != null)
                {
                    foreach (var param in paramList)
                    {
                        sqlCommand.Parameters.Add(param);
                    }
                }
                SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCommand);
                DataSet dataSet=new DataSet();
                dataAdapter.Fill(dataSet);
                return dataSet;
            }
        }