我正在编写一个自定义搜索页面,该页面将允许用户搜索图稿,但我希望允许用户在搜索框中输入自定义命令/标签,以便他们可以直接控制过滤他们的结果无需使用除搜索框之外的任何内容。让我举一个例子......将自定义搜索过滤器转换为动态SQL
我希望用户能够键入类似以下到一个文本框:
Textbox Input: color=red|blue|green value>=5.00+<=10.00
这将转换为下面的SQL,我可以挂到年底我的SQL查询:
AND (Artwork.Color = 'red' OR Artwork.Color = 'blue' OR Artwork.Color = 'green')
AND (Artwork.Price >= 50.00 AND Artwork.Price <= 100.00)
你觉得什么...
1)让人们输入这些自定义命令到一个文本框,将这些命令SQL,是这款N正式的练习?如果没有,我还能如何让高级搜索选项通过,同时保持页面简单?
2)将这些自定义命令转换为SQL的最佳方式是,如何转换未知数量的可能由多个运算符(+,|)分隔的过滤器?
这是一个使用ASP.NET(C#)和MSSQL构建的Web项目。提前致谢! :)
如果您只是将这些自定义搜索参数转换为动态SQL,就会冒SQL注入攻击的风险。你有没有办法使用某种ORM(例如Linq-to-SQL)? – 2011-05-26 13:00:00
使用ORM意味着您信任用户输入正确的语法。如果输入:shape = square | triangle和“shape”不是数据模型中的字段,该怎么办? – Tundey 2011-05-26 13:05:58
就我个人而言,我一直沿着创建用于有效输入控件的所有搜索选项(复选框列表,日期选择器等)的UI的路线。尽管这首先听起来很痛苦,但我认为,一旦你用SQL ish systax出现了,它就会变成同样的东西,并将其转换并安全使用。它也对非极客更友好。 – 2011-05-26 13:07:18