我现在在做一个JSP的数据查询读取的页,是按班组和按日期查询的,其中 strClass和strDate分别获取过来的班组和日期的关键字,初始值均为“”,我通过它们的值的不同来判断SQL语句,代码如下。通过运行测试之后,这两项的值都可以获取过来,但是只有两项都不为空和strClass不为空而strDate为空的情况下,才可以正常读取并显示,其他两种情况根本读不进if语句里,不知道是什么问题。另外我在Access查询器里试着运行了一下关于查询的SQL语句如:select * from wenjuan as w where 原始流水号 like '20090728';  也是查不到信息的。请大家帮忙看看,多谢了啊!
          if(strClass != "" && strDate == "")  
   sql = "select w.*,c.班组,c.班长 from wenjuan as w,class as c where c.成员 = w.受理工号 and c.班组 = '"+strClass+"'";
 
   else if(strClass != "" && strDate != "")
   sql = "select w.*,c.班组,c.班长 from wenjuan as w,class as c where c.成员 = w.受理工号 and c.班组 = '"+strClass+"' and w.原始流水号 like '%"+strDate+"%' ";   
   
   else if(strClass == "" && strDate != "")
   sql = "select * from wenjuan as w where 原始流水号 like '%"+strDate+"%' ";
 
   else
   {   
       sql = "select * from wenjuan";
       out.println("a???");                     //测试语句,经测试为未执行
   }

解决方案 »

  1.   

    字符串不等于用!"".equals(strClass)代替
      

  2.   


     那你可以把strClass ,strClass 的值打印出来看看!!
    自己先找找原因~~~
      

  3.   

    if(!"".equals(strClass) && "".equals(strDate)) 
      sql = "select w.*,c.班组,c.班长 from wenjuan as w,class as c where c.成员 = w.受理工号 and c.班组 = '"+strClass+"'"; 
    else if(!"".equals(strClass) && !"".equals(strDate)) 
         sql = "select w.*,c.班组,c.班长 from wenjuan as w,class as c where c.成员 = w.受理工号 and c.班组 = '"+strClass+"' and w.原始流水号 like '%"+strDate+"%' ";  
    else if("".equals(strClass) && !"".equals(strDate))
          sql = "select * from wenjuan as w where 原始流水号 like '%"+strDate+"%' "; else {  
          sql = "select * from wenjuan"; 
          out.println("a???");                    //测试语句,经测试为未执行 
      }
      

  4.   

    建议判断空用:
    org.apache.commons.lang.StringUtils.isNotEmpty(Str) 或者 isEmpty(Str)等同于对Str进行非空判断
      

  5.   

    进不去你自己认为应该执行的if,
    就在这个if前打印它的条件,
    看看true 还是false
      

  6.   

    可以打印,那打印出来是什么? 
     在看能否进入if("".equals(strClass) && !"".equals(strDate)) 
    这个判断中
      

  7.   

    还有就是提醒下
     要是相同的字符串多次要用
     直接提出来申明个
    String str=“select w.*,c.班组,c.班长 from wenjuan as w,class as c where c.成员 = w.受理工号 and c.班组”;
     用的时候
     String sql=str+“and 。”;
     这个是我个人习惯, 一般程序也看着舒服!!!
     
    还有打印的时候,有时空字符“”“ ”打印不出来看不来
       System.out.print(":"+strClass+":"); 检查是否是“”还是“  ”;
    个人意见~~
      

  8.   

    呵呵 可以了 按照各位说的用equals判断 就可以读出来了 多谢大家了