有几个下拉框 用户用来选择查询条件 可以选也可以不选 我的sql语句怎么写啊 

解决方案 »

  1.   

    //都不为空时
       if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )  
       {
        sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between   to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ') and TRIM(TYPE_NAME) = '"+TYPE_NAME+"'";
       } 
       //线路号为空时
       else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) 
       {
          sql = "select * from TM_BUS_SPECIAL_VIEW where  TRIM(TYPE_NAME) = '"+TYPE_NAME+"'" + "AND CREATE_TIME between   to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')";
         //sql = "select * from TM_BUS_SPECIAL_VIEW";
      }
       //信息类型为空时
       else if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
       {
           sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between   to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')";
       }
       else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
       {
          sql = "select * from TM_BUS_SPECIAL_VIEW";
       }
       else
       {
           sql = "select * from TM_BUS_SPECIAL_VIEW";
       }
      return sql;
     }这是我写的 
    javabean 里面的 
    我把用户选择的参数传过去 在bean 里判断 
    可无论怎么操作 所执行的语句都是第一次查询的sql语句 
    该怎么办啊有没有别的好办法啊
      

  2.   

    if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )  
       else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) 
       看看这两个条件!!!!
    TYPE_NAME!=null&&!TYPE_NAME.trim().equals(""))你用的||它当然执行第一个了!!!!下面也一样这是O的看法
      

  3.   

    前面你写的就不看了 太多 你应该换个思路 你应该有个默认状态 一般来说 用户不选择的话就默认所有 这是个思路问题
    你就这样做
    先定义一个
    String sql = select * from TM_BUS_SPECIAL_VIEW where 1=1;
    然后用户选择了第一个查询条件 假设RiZhi_line_no
    if (RiZhi_line_no!= null || !RiZhi_line_no.equals("")) {
      sql += " and LINE_NO=" + RiZhi_line_no;

    依此类推
    第二个
    if (TYPE_NAME!=null&&!TYPE_NAME.equals("")) {
      sql += " and TRIM(TYPE_NAME) = '"+TYPE_NAME + "'";
    }
    最后加上你的排序或者其他条件
      sql += "order by yyyy";即可