你好Stackoverflow的好人。
我的Sql存在问题,因为我是新手,我很确定它是语法问题还是错误/误解逻辑。
这是相关的想法:
<asp:DropDownList ID="DropDownList_Brand" runat="server">
<asp:ListItem>Brændeovn</asp:ListItem>
<asp:ListItem>Brændespande</asp:ListItem>
<asp:ListItem>Pejsesæt</asp:ListItem>
<asp:ListItem>Optænding</asp:ListItem>
<asp:ListItem>Vedligeholdelse</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="TextBox_Sog_Adv" runat="server"></asp:TextBox>
<asp:Button ID="Button_Sog_Adv" runat="server" Text="SØG" OnClick="Button_Sog_Click_Adv" />
这是后端:
protected void Button_Sog_Click_Adv(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
var Pr_Navn = TextBox_Sog_Adv.Text;
var Pr_Type = DropDownList_Brand.Text;
cmd.CommandText = "SELECT * FROM Table_Products WHERE products_name LIKE '%" + Pr_Navn + "%' OR products_brand LIKE '%" + Pr_Navn + "%' AND products_type='" + Pr_Type + "'";
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
Repeater_Sog_Adv.DataSource = dt;
Repeater_Sog_Adv.DataBind();
}
现在我很确定它的问题就在于问题,我会相信AND就像OR一样,但它必须是真的。 (可能是错的)
然而,这里的主要焦点是这一行:
cmd.CommandText = "SELECT * FROM Table_Products WHERE products_name LIKE '%" + Pr_Navn + "%' OR products_brand LIKE '%" + Pr_Navn + "%' AND products_type='" + Pr_Type + "'";
非常感谢任何帮助。
答案 0 :(得分:4)
你可能会错过一些括号
WHERE (products_name LIKE '%" + Pr_Navn + "%' OR products_brand LIKE '%" + Pr_Navn + "%') AND products_type='" + Pr_Type + "'";
您可以查看sql(sql server here)中的运算符优先级,以了解如何处理混合OR / AND,并立即忘记它,以便记住您应该使用括号。
现在,您应该注意sql注入,并使用parameterized queries。