ASP, c# &SQL复杂参数/查询示例
本文关键字:查询 参数 复杂 SQL ASP | 更新日期: 2023-09-27 18:06:23
我正在构建一个网页,它有几个控件,如CheckBoxList和Listbox(与多选择启用)。这些控件将链接到一个sql数据库表,一个用于颜色,一个用于大小。设计查询的最佳方式是什么,主要是'where'语句来过滤gridview中列出的与用户所选尺寸和颜色相匹配的衬衫。例如,如果用户从colorsCheckBoxList中选择红色和蓝色,从sizesListbox中选择中号和大号,那么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中,您可以首先通过分割','和查询
来分隔参数。//create sp name
//传递参数颜色和大小
//开始sp
//写入分割参数代码,可能在for语句中,然后
SELECT col1, col2, col3 from shirts
WHERE size IN (separated param list) AND
color IN (separated param list of colors)