这是我在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#
的新人答案 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