'='附近的语法不正确错误:dr = cmd.ExecuteReader();

时间:2016-12-27 08:35:51

标签: c# asp.net

这是我在MasterPage.master上的搜索按钮

<asp:TextBox ID="Search" style="width:339px ; height: 20px;" runat="server" placeholder="Search Woooo" class="textbox" formnovalidate="formnovalidate"></asp:TextBox>
<asp:ImageButton ID="ImageButtonSearch" runat="server" ImageUrl="~/Images/Icons/search.png" Width="22px" OnClick="ImageButtonSearch_Click" CausesValidation="False" />

MasterPage.master.cs

protected void ImageButtonSearch_Click(object sender, ImageClickEventArgs e)
{
    Response.Redirect("~/search.aspx?Search=" + Search.Value);
}

search.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
    string cs = Global.CS;

    protected void Page_Load(object sender, EventArgs e)
    {
        string search = Request.QueryString["search"];

        if (!Page.IsPostBack)
        {
            string xx = "";
            string sql = @"SELECT studentID FROM Student WHERE username == '"+ search + "'";

            SqlConnection con = new SqlConnection(cs);
            SqlCommand cmd = new SqlCommand(sql, con);

            con.Open();
            SqlDataReader dr;
            dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                xx += string.Format("{0}",dr["sudentID"]);
            }

            dr.Close();
            con.Close();

            test.InnerHtml = xx;
        }
    }
}

我想在搜索框中尝试基于用户名搜索。但在我点击搜索按钮后,它会在'='附近显示不正确的语法。来源错误:dr = cmd.ExecuteReader();.我已经通过很多地方搜索问题,但我仍然无法理解。我还是c#

的新人

2 个答案:

答案 0 :(得分:4)

您正在将SQL与C#混合使用。使用单个=进行平等比较。

更重要的是,您很容易受到SQL注入攻击。你应该先解决这个问题。

SQL应如下所示:

SELECT studentID FROM Student WHERE username = @username

您应该将参数@username添加到C#代码中,如下所示:

cmd.Parameters.Add("@username").Value = search;

答案 1 :(得分:2)

问题是在T-SQL中需要一个SINGLE等号: @"SELECT studentID FROM Student WHERE username = '"+ search + "'";

(用户名=旁边)

UPD 正如Patrick Hofman上面指出的那样,您可能希望研究SQL注入以及防范它的常用方法:https://msdn.microsoft.com/en-us/library/ff648339.aspx