Asp.net下多条件查询的办法

本文介绍两种灵活构造SQL查询的方法:一是使用存储过程结合ISNULL处理空条件;二是通过实体对象在DAL层动态拼接SQL语句,实现高效的数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方式:
写一个存储过程,将所有的条件作为参数(如@case1, @case2...)传入,当某个条件为空的时候,传入Convert.DbNull即可
在存储过程中的SQL语句的Where条件中,以
字段1 = isnull(@case1, 字段1) and 字段2 = isnull(@case2, 字段2) and ...
的形式列出所有条件即可

例1:
select * from testwhere test1 = '1' and test2 = '2' and test3 = '3'
结果:
test1 test2 test3
--------------------------- -------------------------------------------- ----------------------
1 2 3
1 2 3
(2 行受影响)
--------------------------------------------

declare @param1 varchar(10)
declare @param2 varchar(10)
declare @param3 varchar(10)

set @param1 = '1'
set @param1 = '2'
set @param1 = '3'

select * from test where test1 = isnull(@param1, '1')
and test2 = isnull(@param2, '1') and test3 = isnull(@param3, '1')

第二种方式:
可以将所有查询条件做为一个实体对象传递到DAL层,然后通过通过判断各种条件是否为空来构造SQL语句

例:
str sql = "select * from tb_student where 1=1";
if(checkbox1.checked)
sql
+= " and StuName like '%"+text1.Text+"%' ";
if(checkbox2.checked)
sql
+= " and StuID like '%"+text2.Text+"%' ";
if(checkbox3.checked)
sql
+= " and StuADD like '%"+text3.Text+"%' ";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值