2016-12-27 43 views
0

這是MasterPage.master我的搜索按鈕'='附近的語法不正確錯誤:dr = cmd.ExecuteReader();

<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#

回答

4

您正在將SQL與C#混合使用。平等比較是通過一個=完成的。

更重要的是,您很容易受到SQL注入攻擊。你應該先照顧這個。

的SQL應該是這樣的:

SELECT studentID FROM Student WHERE username = @username 

你應該參數@username添加到您的C#代碼,就像這樣:

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

的問題是,在T-SQL中的單個等號是必需的: @"SELECT studentID FROM Student WHERE username = '"+ search + "'";

(旁邊的用戶名=

UPD正如帕特里克·霍夫曼指出在上面,您可能想研究SQL注入和常見的防範方法:https://msdn.microsoft.com/en-us/library/ff648339.aspx

+0

解決!謝謝 –

+2

我不希望他們進入'';刪除學生表 - - 作爲用戶名。 –

+0

@PatrickHofman當然,你注意到了,我只指出了例外的原因。感謝downvoting :) – zaitsman

相關問題