jsp中处理接受的多个参数问题

本文探讨了在数据量小和大时如何优化SQL查询,特别关注在多个条件组合查询时的技巧,通过实例展示了如何高效地拼接SQL语句以避免冗余并处理空值情况。

对于数据量小的接受参数的查找可以这样处理,判断各种情况。然后分别进行对定义好的sql语句进行执行:

<% if(name.equals("")&&degree_leve.equals("")) { %> <mce:script language="javascript"><!-- //在这里判断都为空的情况,用javascript跳转,如果为空, alert("请输入要查询的信息"); //就不加载驱动,不为空在进行下一步操作 top.location='degree_leveSearch.jsp'; // --></mce:script> <% } else { <% if(!name.equals("")&&!degree_leve.equals("")) { sql = "select * from information where name='"+name+"' and native_place = '"+degree_leve+"'"; } %> <% if(name.equals("")&&!degree_leve.equals("")) { sql = "select * from information where native_place = '"+degree_leve+"'"; } %> <% if(!name.equals("")&&degree_leve.equals("")) { sql = "select * from information where name='"+name+"'"; } } %>

然而如果数据量要是大的话就不可以这样判断了,我想过对调用出来的结果集进行套接考虑,不知道能不能实现,等看看API文档,可以实现了再添上,现在那一个很好了例子说说这个问题的处理方法:

String age = ""; String name = ""; String sex = ""; String exp = "select * from employee where "; if (age.length() > 0) { exp = exp + "age= " + age + " and "; //运用判断语句,对每个不为空的值拼接到sql语句上面 } if (name.length() > 0) { exp = exp + "name= ' " + name + " ' and "; } if (sex.length() > 0) { exp = exp + "sex= ' " + sex + " ' "; //exp.lastIndexOf() } if(exp.lastIndexOf( "and ")==exp.length() -4) { exp=exp.substring(0,exp.lastIndexOf( "and ")) ; //这一步实现了如果有部分值是空值 // 导致sql语句后面多一个and可以把and省去。 }

但是这样写的话,如果不好的情况下所有结果都是空的情况下,就会出错了,那我们这样写试试

if(age.length>0 || name.length>0 || sex.length>0) { exps=exps.substring(0,exps.lastIndexOf( "and ")); }else{ exps=exps.substring(0,exps.lastIndexOf(" where ")); }

这样写就可以解决了,什么情况下都可以顺利的执行sql语句。。。。

(*引入a.lastIndexOf("and"); 和a.length();Stirng a = nihao and and;

举例说明:前面是求最后一个and的出现的初始位置,从头到尾,返回一个int的值。后面的是所有字符串的长度,谨记包括空格)对于现在的a来说,a.lastIndexOf("and")= 10; a.length() = 13;后者-4的话就是减去了一个空格和一个and的长度,4位,也就是表名最后一个是and,上面的exp=exp.substring(0,exp.lastIndexOf( "and "))这句话,就是在最后一个字符串是and情况下,把and去掉,在这里只解释新知识,我们跳回原文)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值