我用JSP做的一个根据三种条件查询的页面,我想的是判断其中三朝个表单,只要其中一个不为空就执行下面else 中的SQL语句,但是好象不对,高手们帮我分析分析,或者是多条件查询有更好的办法吗?
代码如下:
String key,keyy,keyyy;
    
          key=request.getParameter("key");keyy=request.getParameter("keyy");keyyy=request.getParameter("keyyy");  if((request.getParameter("key")==null || request.getParameter("key").trim().equals("")) && (request.getParameter("keyy")==null || request.getParameter("keyy").trim().equals("")) &&  ( request.getParameter("keyyy")==null || request.getParameter("keyyy").trim().equals("")))
          sql="select * from sms_LH_content order by SENDTIME desc";
      else
      {
          sql="select * from sms_LH_content where (to_char(sendtime,'yyyy-mm-dd')=('"+key+"')) or  (FENLEI= '"+keyy+"')  or (CONTENT like '%"+keyyy+"%') order by SENDTIME desc";
      }

解决方案 »

  1.   

    如果有2个以上参数有值,你希望用and 还是用or?
      

  2.   

    那就比较麻烦了,试试:String key = request.getParameter("key")==null?"":request.getParameter("key");
    String keyy = request.getParameter("keyy")==null?"":request.getParameter("keyy");
    String keyyy = request.getParameter("keyyy")==null?"":request.getParameter("keyyy");

    String sql="select * from sms_LH_content";
    if(key!=null && !key.equals(""))
    {
        sql+=" where to_char(sendtime,'yyyy-mm-dd'='"+key+"') ";
        if(keyy!=null && !keyy.equals(""))
        {
            sql+=" or FENLEI= '"+keyy+"'";
        }
        if(keyyy!=null && !keyyy.equals(""))
        {
            sql+=" or CONTENT like '%"+keyyy+"%'";
        }
    }
    else if(keyy!=null && !keyy.equals(""))
    {
        sql+=" where FENLEI= '"+keyy+"'";
        if(keyyy!=null && !keyyy.equals(""))
        {
    sql+=" or CONTENT like '%"+keyyy+"%'";
        }
    }
    else if(keyyy!=null && !keyyy.equals(""))
    {
        sql+=" where CONTENT like '%"+keyyy+"%'";
    }
    sql+=" order by SENDTIME desc";
      

  3.   

    有语法错误
    java.sql.SQLException: ORA-00907: missing right parenthesis 
    这是个什么错了
      

  4.   

    哦,第一个if下面:
    sql+=" where to_char(sendtime,'yyyy-mm-dd')='"+key+"'";
      

  5.   

    谢谢 pczhouji  你的编程水平真高  我的QQ:121716761 看到后加我
      

  6.   

    其实楼主的代码和ls的差不多,可行
    ~~~
    还是有所区别的吧,LZ那样会把符合空值的记录也列出来。
      

  7.   

    假设三个查询条件 name password email  表名 users  String sql = “select * from users where 1='1'”;    if(name != null && !name.equals(""))        sql += " and name='"+name+"'";    if(password != null && !password .equals(""))        sql += " and password ='"+password +"'";    if(email != null && !email.equals(""))        sql += " and email='"+email+"'";