ASP,C#&请查看SQL复杂参数/查询示例

时间:2011-08-23 18:04:51

标签: c# asp.net sql parameters

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

这是一个.aspx页面,页面上有'代码隐藏'(C#)。我读过使用参数是清除代码和安全性的最佳方法,但我想听听别人的想法。

请告诉我您可能需要的任何进一步细节,我非常感谢您在此问题上花费的时间。

3 个答案:

答案 0 :(得分:0)

是始终使用SQL参数来消除SQL注入的风险。看到数据库架构很难说出你需要什么。以下是我要做的事情。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

选择将根据两者的大小和颜色多样或单一选择而变化。您可以使用存储过程进行锻炼。(也会更快)将参数传递给sp时,您可以将两者的选择作为字符串传递用字符分隔逗号,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)

//结束sp