加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

.net – 针对数据库表实现具有多个可选参数的搜索功能

发布时间:2021-03-14 16:34:51 所属栏目:编程 来源:网络整理
导读:我想搜查是否有一个首选的计划模式来实现具有针对数据库表的多个可选参数的搜刮成果,个中对数据库的会见应仅通过存储进程. 方针平台是.Net与SQL 2005,2008后端,但我以为这长短常广泛的题目. 譬喻,我们有客户表,我们但愿为UI提供差异参数的搜刮成果,譬喻客户类

我想搜查是否有一个首选的计划模式来实现具有针对数据库表的多个可选参数的搜刮成果,个中对数据库的会见应仅通过存储进程.

方针平台是.Net与SQL 2005,2008后端,但我以为这长短常广泛的题目.

譬喻,我们有客户表,我们但愿为UI提供差异参数的搜刮成果,譬喻客户范例,客户状态,客户邮编等,全部这些都是可选的,可以恣意组合举办选择.换句话说,用户可以仅按customerType或按customerType,customerZIp或任何其他也许的组合举办搜刮.
有几种可用的计划要领,但它们都有一些弱点,我想问一下它们中是否有一个首选计划,可能是否有另一种要领.

>按照来自UI的搜刮哀求,在营业层中动态天生sql where子句sql语句,并将其作为参数转达给存储进程.像@Where =’,个中CustomerZip = 222221′
在存储进程内部天生动态sql语句并行使sp_executesql执行它.
弱点:动态sql,sql注入
>实现具有多个输入参数的存储进程,暗示来自UI的搜刮字段,并行使以下结构仅为where语句中的哀求字段选择记录.

那边

(CustomerType = @CustomerType OR @CustomerType is null )

AND      (CustomerZip = @CustomerZip OR @CustomerZip is null )

AND   …………………………………………

弱点:sql也许存在机能题目.

3.为每个搜刮参数组合实现单独的存储进程.
弱点:跟着搜刮参数的增进,一再的代码,存储进程的数目会敏捷增进.

办理要领

这是描写如安在SQL: Dynamic Search Conditions in T-SQL by Erland Sommarskog中执行此操纵的玄妙机能影响的最佳文章.它涵盖了每个要领,并具体先容了每种要领的PRO和Cons.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读