'='附近的语法不正确错误:dr = cmd.ExecuteReader();
问题描述:
这是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#
答
您正在将SQL与C#混合使用。平等比较是通过一个=
完成的。
更重要的是,您很容易受到SQL注入攻击。你应该先照顾这个。
的SQL应该是这样的:
SELECT studentID FROM Student WHERE username = @username
你应该参数@username
添加到您的C#代码,就像这样:
cmd.Parameters.Add("@username").Value = search;
答
的问题是,在T-SQL中的单个等号是必需的: @"SELECT studentID FROM Student WHERE username = '"+ search + "'";
(旁边的用户名=
)
UPD正如帕特里克·霍夫曼指出在上面,您可能想研究SQL注入和常见的防范方法:https://msdn.microsoft.com/en-us/library/ff648339.aspx
解决!谢谢 –
我不希望他们进入'';删除学生表 - - 作为用户名。 –
@PatrickHofman当然,你注意到了,我只指出了例外的原因。感谢downvoting :) – zaitsman