【问题标题】:ASP, C# & SQL complex parameter/query examples please请提供 ASP、C# 和 SQL 复杂参数/查询示例
【发布时间】:2015-08-31 20:32:32
【问题描述】:

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

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

请让我知道您可能需要的更多详细信息,非常感谢您花时间解决这个问题。

【问题讨论】:

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

标签: c# asp.net sql parameters


【解决方案1】:

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

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

您可以将您的 ID 从您的选择框中输入为 REDSHIRTID 和 BLUESHIRTID。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      选择将根据大小和颜色的多选或单选而有所不同。您可以使用存储过程进行锻炼。(而且它会更快)在将参数传递给 sp 时,您可以将两者的选择作为字符串传递如果选择这三个,则用逗号分隔字符,例如大小为“红、蓝、绿”。颜色相同。 在 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        相关资源
        最近更新 更多