搜索多个表时使用单个输入进行搜索

时间:2014-12-18 17:56:50

标签: c# mysql asp.net

我需要为ASP.NET C#网站创建一个搜索按钮。使用1种搜索键制作按钮很容易。例如:

Select * from table where name like '%' + search_criteria + '%'

但我真正需要的是制作一个包含更多"类似"的搜索按钮。来自不同的表格。我有我的数据库

  1. Category.Category_Name nchar
  2. Product.Description nchar
  3. Product.Product_Cost float
  4. Manufacturer.Manufacturer_Name nchar
  5. 你可以看到哪些是哪个表。另外在GridView的帮助下,我想在我的网页上只显示前三个。但是我想要一个带有单个按钮的文本框,当我尝试搜索某些内容时,搜索类别名称或描述或成本或制造商名称全部在1中

    我已经读过你只能从一个表中搜索多个东西或者使用包含语句来搜索不同的表。我在互联网上看了好几个小时,但徒劳无功。有人可以帮我弄清楚我在WHERE子句中需要什么,所以我可以把它放在LIKE过滤器中的aspx.cs C#代码中并让我的按钮工作吗?

1 个答案:

答案 0 :(得分:0)

我不知道这是否完全回答了你的问题,但我会尝试。虽然,公平地说,你所需要的并不是非常清楚,问题是接近太宽

void btnSearch_Click (object sender, EventArgs e)
{
    string sql = "select Product_name from Product p inner join Category c on p.Category_id = c.Category_id WHERE c.Category_Name Like '%{0}%' UNION ALL " +
        "select Product_name from Product where Description Like '%{0}%' UNION ALL " +
        "select Product_name from Product p inner join Manufacturer m on p.Manufacturer_id = m.Manufacturer_id WHERE m.Manufacturer_id Like '%{0}%' ";

    decimal price;
    if (decimal.TryParse(txtSearch.Text.Trim(), out price)
        sql +=   "UNION ALL select Product_name from Product where Product_Cost >= {0} " 
    Search(string.Format(sql, txtSearch.Text.Trim());
}


void Search (string sql)
{
    // use your sql here to fill the grid, etc.
}

注意 @JoelCoehoorn注意到使用此代码进行Sql注入的可能性[这是安全问题]。我不知道你现在是否关心它。但是为了防止Sql Injection,您需要使用查询参数化。需要对查询稍作更改,但对Command对象设置进行更多更改。