C# 单击“搜索”按钮时出错

C# 单击“搜索”按钮时出错,c#,mysql,C#,Mysql,当单击搜索按钮时,它会给我这个错误(“43”附近的语法不正确。)43是区域id,我确保所有表中的区域id都相同,gov id也相同,下面是我使用的代码 protected void Button1_Click(object sender, EventArgs e) { //Page.RegisterStartupScript("open", "<script language=javascript>alert('dd')</script>"); //

当单击搜索按钮时,它会给我这个错误(“43”附近的语法不正确。)43是区域id,我确保所有表中的区域id都相同,gov id也相同,下面是我使用的代码

protected void Button1_Click(object sender, EventArgs e)
{
    //Page.RegisterStartupScript("open", "<script language=javascript>alert('dd')</script>");
    //   Session["conection"] = "Data Source=MEDICONSULT;Initial Catalog=test;Integrated Security=True";
    Session["conection"] = "Data Source=MEDICONSULT;Initial Catalog=test1;Integrated Security=True";

    SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString);
    connection.Open();
    SqlCommand command = new SqlCommand();
    connection = new SqlConnection((string) Session["conection"]);
    connection.Open();
    SqlDataAdapter da_1 = new SqlDataAdapter(command);
    da_1 = new SqlDataAdapter();
    command = new SqlCommand();
    command.Connection = connection;
    string sql1 = "select Address1,provname from sites where cat_id=2";

    if (addressTextBox.Text != "")
    {
        sql1 = "SELECT provname,address1,LAT,LONG FROM site where cat_id=2 and provname like '%'+@provname+'%'";
        SqlParameter search = new SqlParameter();
        search.ParameterName = "@provname";
        search.Value = addressTextBox.Text.Trim();
        command.Parameters.Add(search);
    }

    if (DropDownList1.SelectedValue != "0")
    {
        sql1 = " SELECT area, address1, provname FROM sites WHERE cat_id=2 and gov_id='" + DropDownList1.SelectedValue + "'";
    }

    if (DropDownList2.SelectedValue != "0" && DropDownList1.SelectedValue != "0")
    {
        sql1 = "SELECT area, address1,provname FROM sites WHERE cat_id=2 and gov_id='" + DropDownList1.SelectedValue + "and area_id='" + DropDownList2.SelectedValue;
    }

    command.CommandText = sql1;
    da_1.SelectCommand = command;
    ds_1 = new DataSet();
    da_1.Fill(ds_1, "sites");

    searchResults.DataSource = ds_1;
    searchResults.DataBind();
    Label1.Text = ds_1.Tables[0].Rows.Count > 0 ? ds_1.Tables[0].Rows.Count.ToString() : "لا يوجد نتائج من البحث الذي ادخلته";
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
//RegisterStartupScript(“打开”、“警报('dd')”);
//会话[“连接”]=“数据源=MEDICONSULT;初始目录=测试;集成安全=真”;
会话[“连接”]=“数据源=MEDICONSULT;初始目录=test1;集成安全性=True”;
SqlConnection连接=新的SqlConnection(ConfigurationManager.ConnectionString[“testConnectionString”].ConnectionString);
connection.Open();
SqlCommand=newsqlcommand();
连接=新的SqlConnection((字符串)会话[“连接”]);
connection.Open();
SqlDataAdapter da_1=新的SqlDataAdapter(命令);
da_1=新的SqlDataAdapter();
command=newsqlcommand();
command.Connection=连接;
string sql1=“从cat_id=2的站点选择地址1,provname”;
如果(addressTextBox.Text!=“”)
{
sql1=“从cat_id=2的站点选择provname、address1、LAT、LONG,并选择provname,如“%”++@provname++“%”;
SqlParameter search=新的SqlParameter();
search.ParameterName=“@provname”;
search.Value=addressTextBox.Text.Trim();
命令.参数.添加(搜索);
}
如果(DropDownList1.SelectedValue!=“0”)
{
sql1=“从cat_id=2和gov_id='”的站点中选择区域、地址1、provname“+DropDownList1.SelectedValue+”;
}
if(DropDownList2.SelectedValue!=“0”&&DropDownList1.SelectedValue!=“0”)
{
sql1=“从cat_id=2和gov_id='”+DropDownList1.SelectedValue+“和area_id='”+DropDownList2.SelectedValue的站点中选择area、address1和provname;
}
command.CommandText=sql1;
da_1.SelectCommand=命令;
ds_1=新数据集();
da_1.填充(ds_1,“现场”);
searchResults.DataSource=ds_1;
searchResults.DataBind();
Label1.Text=ds_1.Tables[0]。Rows.Count>0?ds_1.Tables[0]。Rows.Count.ToString():“Rows.Count.ToString”;
}

您在
之前以及在查询的和处遗漏了一个引号

 sql1 = "SELECT area, address1,provname FROM sites WHERE cat_id=2 and gov_id='" + DropDownList1.SelectedValue + "'"+ " and area_id='" + DropDownList2.SelectedValue+"'";
但我肯定会说,请使用参数化查询

Sql1 = "SELECT area, address1,provname FROM sites WHERE cat_id=2 and gov_id= @gov_id and area_id= @area_id";
SqlCommand cmd = new SqlCommand(sql1, conn);
cmd.Parameters.AddWithValue("@gov_id", DropDownList1.SelectedValue);
cmd.Parameters.AddWithValue("@area_id", DropDownList2.SelectedValue);
你应该改用

这种类型的字符串连接对攻击是开放的。最常见的是,在这种连接中,您可能会忘记一些单引号(
),找到忘记这些引号的位置将非常困难

sql1 = "SELECT area, address1,provname FROM sites WHERE cat_id=2 and gov_id= @gov and area_id= @area_id";
SqlCommand cmd = new SqlCommand(sql1, conn);
cmd.Parameters.AddWithValue("@gov", DropDownList1.SelectedValue);
cmd.Parameters.AddWithValue("@area_id", DropDownList2.SelectedValue);