日期:2014-05-18  浏览次数:20674 次

jsp多条件查询数据库遇到的问题,急
public static RowSetPage getResult(String age,String sex,int pageNo) throws Exception{
String sql="select id,name,age,sex,email from userwhere 1=1";
boolean valid=false; 

if(age!=null&&!age.equals("")){ 
sql.concat("and age='"+age+"'"); 
valid=true; 

if(sex!=null&&!sex.equals("")){ 
sql.concat("and sex='"+sex+"'"); 
valid=true; 
}

  if(valid){
//执行SQL语句
PagedStatement pst =new PagedStatementOracleImpl(sql,pageNo,3);

  return pst.executeQuery();
  }

参考http://topic.csdn.net/u/20070320/14/f1cd25c2-e4e7-4e08-af68-ca62273125d6.html

为什么jsp调用执行这段程序后,直接将数据库表里的所有记录返回页面,在页面重新输入查询条件后不执行呢?
  else{
  PagedStatement pst =new PagedStatementOracleImpl(sql,pageNo,3);
  return pst.executeQuery();
  }
}

------解决方案--------------------
跟踪调试你这个valid变量,看看它的值是不是false
------解决方案--------------------
程序全帖出来呀。

好像掉了一句话呀
pst=con.prepareStatment(sql);
------解决方案--------------------
debug一下
------解决方案--------------------
1.试输出变量age和sex,第一次全部记录都输出出来了应该是因为age和sex是null或""
2.再次输入条件的时候不执行是什么意思,如果你的意思是查不到任何结果的话那有可能是变量sex接收的是一个中午参数是吧,要检查一下接受参数的时候有没有用正确的解码方式,同样可以根据输出判断一下接受的sex是不是乱码就知道了
------解决方案--------------------
在你的PagedStatementOracleImpl里面把sql打印出来看看
------解决方案--------------------
from 后面跟的表明和WHERE条件你连到一起了 不是知道是不是粘贴过来的
而且 where 1=1为永远真的~
也根本没必要那么写的啊`

------解决方案--------------------
不想页面一打开就显示所有的记录
那就判断一下嘛
如果传入的两个参数都为空 就什么也不做。
------解决方案--------------------
sql变量一开始写就错了,where不能和前面的连在一起,要有空格,否则返回错误结果