ASP、C#&;请提供SQL复杂参数/查询示例

ASP、C#&;请提供SQL复杂参数/查询示例,c#,asp.net,sql,parameters,C#,Asp.net,Sql,Parameters,我正在构建一个网页,上面有一些控件,比如CheckBoxList和Listbox(启用了多选)。这些控件将链接到sql数据库表,一个用于颜色,一个用于大小。设计查询的最佳方法是什么,主要是“where”语句,用于过滤网格视图中列出的衬衫,这些衬衫与用户选择的尺寸和颜色相匹配。例如,如果用户从colorsCheckBoxList中选择红色和蓝色,从SizeListBox中选择中大号,则gridview将仅显示红色和中大号衬衫以及蓝色和中大号衬衫。我已经完成了大部分工作,我只是想不出设计where子

我正在构建一个网页,上面有一些控件,比如CheckBoxList和Listbox(启用了多选)。这些控件将链接到sql数据库表,一个用于颜色,一个用于大小。设计查询的最佳方法是什么,主要是“where”语句,用于过滤网格视图中列出的衬衫,这些衬衫与用户选择的尺寸和颜色相匹配。例如,如果用户从colorsCheckBoxList中选择红色和蓝色,从SizeListBox中选择中大号,则gridview将仅显示红色和中大号衬衫以及蓝色和中大号衬衫。我已经完成了大部分工作,我只是想不出设计where子句的最佳方法。如果每个控件只允许一个选择,我可以轻松创建它,但我更喜欢允许多个选择

这是一个.aspx页面,页面后面有“代码”(C#)。我读过使用参数是干净代码和安全性的最佳方法,但我想听听其他人的想法


请告诉我您可能需要的任何详细信息,我非常感谢您为此问题花费的时间。

是的,请始终使用SQL参数来消除SQL注入的风险。如果看不到数据库模式,很难判断您需要什么。这是我在你的情况下要做的

SELECT shirtid, shirtname
FROM shirts
WHERE colorID IN (REDSHIRTID, BLUESHIRTID)

您可以将选择框中的ID设置为REDSHIRTID和BLUESHIRTID。

您可以使用表值或XML参数传递大小和颜色的多个ID。我个人倾向于选择表值参数。

选择将根据大小和颜色的不同而有所不同。您可以使用存储过程进行训练。(速度也会更快)将参数传递给sp时,您可以将这两个参数的选择作为字符串传递,字符串以逗号e分隔,g表示“红、蓝、绿”尺寸,如果选择这三种尺寸,则表示颜色相同。 在sp中,您可以首先通过拆分“,”并按如下方式查询来分离参数

//创建sp名称

//传递参数颜色和大小

//开始sp

//编写用于拆分参数的代码,可能在for语句中

   SELECT col1, col2, col3 from shirts
   WHERE size IN (separated param list)  AND
   color IN (separated param list of colors)

//end sp

我们需要更多信息:架构/表结构?