try
  {
        Connection con = db.getConnection();
        Statement stmt = con.createStatement();
        ResultSet rs=null;

        String sqlQuery = "select * from TabGmailInbox where ";
        System.out.println("******"+sqlQuery);//第一个打印
        if(startTime.trim() ==""){
sqlQuery =sqlQuery+"timebegin between '"+ startT + "'";
}
else{
sqlQuery =sqlQuery+"timebegin between '"+ startTime + "'";
}
         System.out.println("******"+sqlQuery);//第二个打印
if(endTime.trim() ==""){
sqlQuery =sqlQuery+"and'"+ endT + "'";
}
else{
sqlQuery =sqlQuery+"and'"+ endTime + "'";
}
if(MailTheme.trim() =="" ){
}
else
{
sqlQuery =sqlQuery+"MailTheme = '"+ MailTheme + "'";
}
if(RecvAccount.trim() ==""){
}
else
{
sqlQuery =sqlQuery+"and RecvAccount = '"+ RecvAccount + "'";
}

if(SenderAccount.trim() ==""){
}
else
{
sqlQuery =sqlQuery+"and SenderAccount = '"+ SenderAccount + "'";
}
if(RecvTime.trim() ==""){
}
else
        {
sqlQuery =sqlQuery+"and RecvTime = '"+ RecvTime + "'";
}
System.out.println("******"+sqlQuery);//第3个打印
rs = stmt.executeQuery(sqlQuery); 
%>
代码如上,在if之前的那个system.out可以打印出来,但是if之后的就打印不出来了,代码似乎执行到if之前就停止了,这是为什么啊?这和这个JSP页面的JavaScript脚本有关系吗?我的IDE显示语法上没有错误的!就是不能执行得到预期的结果啊!请有经验的同志或者知道为什么的同志不吝赐教,但求详尽易懂,我是小白菜一颗 5555555~~~~~~~

解决方案 »

  1.   

    补充一点,if判断条件里面的那些变量如startTime等,是在前面定义的String类型,在JSP中直接通过request.getparameter()方法为其赋值的!
      

  2.   

    整个这段代码的功能就是希望根据网页上面输入的字符串,来动态生成SQL语句!
      

  3.   

    if(startTime.trim() ==""){    
    "".equals(startTime.trim())字符串比较不用==,使用equals方法
      

  4.   

    顶一个。楼主这个问题不大,按他说的改就OK了,String类型的判断相等要用 equals  。
      

  5.   

    引用 2 楼 tomorrow_jie 的回复:
    整个这段代码的功能就是希望根据网页上面输入的字符串,来动态生成SQL语句!
    顶一个。楼主这个问题不大,按他说的改就OK了,String类型的判断相等要用 equals 。 
     
    他的是比较字符串==“”。和equals的结果是一样的。==是比较的地址。equals是比较的值。不过尽量不要==。用"".equals(Object)这样可以避免出现NullPointException。你们让他那样改和没改效果是一样的。是最后少个括号。在jsp页面中。这是不会报语法错误的
      

  6.   

       String str = new String("");
       System.out.println(str.trim()=="");//false
      

  7.   

    您指的是try后面应该有的一个大括号吗?我完整的代码里面是有的,只是在这里我没贴完整罢了!
      

  8.   


    try
      {
        
            String sqlQuery = "select * from TabGmailInbox where ";
            System.out.println("******"+sqlQuery);//第一个打印
            if(startTime.trim() ==""){    
            sqlQuery =sqlQuery+"timebegin between '"+ startT + "'";
        }
        else{
            sqlQuery =sqlQuery+"timebegin between '"+ startTime + "'";    
        }    System.out.println("******"+sqlQuery);//第二个打印
                
        System.out.println("******"+sqlQuery);//第3个打印你的是第一个打印出来了吗?
      

  9.   

    那这样,我把JSP里面的java代码全部贴出来,中间的html代码省略,请您帮我看看Calendar cal = Calendar.getInstance();
    Date day1 = cal.getTime();
    cal.add(Calendar.DATE, -100);
    Date day2 = cal.getTime();
    String startT = Utility.formatDate(day2);
    String endT = Utility.formatDate(day1);
    pageContext.setAttribute("startT", startT);
    pageContext.setAttribute("endT",endT);
    String RecvAccount = request.getParameter("RecvAccount");
    String SenderAccount = request.getParameter("SenderAccount");
    String RecvTime = request.getParameter("RecvTime");
    String MailTheme = request.getParameter("MailTheme");
    String startTime = request.getParameter("date1");
    String endTime = request.getParameter("date2");
    try
      {
       Connection con = db.getConnection();
            Statement stmt = con.createStatement();
            ResultSet rs=null;    
    String str = new String("");
            String sqlQuery = "select * from TabMailLoginAll where ";
            System.out.println("******"+sqlQuery);
    if(startTime.trim().equals("")){
    sqlQuery =sqlQuery +"TimeLogin between '"+ startT + "'";
    }
    else{
    sqlQuery =sqlQuery +"TimeLogin between '"+ startTime + "'";
    }
            System.out.println("******"+sqlQuery);
    if(endTime.trim() ==""){
    sqlQuery =sqlQuery +"and '"+ endT + "'";
    }
    else{
    sqlQuery =sqlQuery +"and '"+ endTime + "'";
    }
            System.out.println("******"+sqlQuery);
    if(MailTheme.trim() =="" ){
    }
    else
    {
    sqlQuery =sqlQuery+"MailTheme = '"+ MailTheme + "'";
    }
            System.out.println("******"+sqlQuery);
    if(RecvAccount.trim() ==""){
    }
    else
    {
    sqlQuery =sqlQuery+"and RecvAccount = '"+ RecvAccount + "'";
    }
    System.out.println("******"+sqlQuery);
    if(SenderAccount.trim() ==""){
    }
    else
    {
    sqlQuery =sqlQuery+"and SenderAccount = '"+ SenderAccount + "'";
    }
            System.out.println("******"+sqlQuery);
    if(RecvTime.trim() ==""){
    }
    else
            {
    sqlQuery =sqlQuery+"and RecvTime = '"+ RecvTime + "'";
    }
    System.out.println("******"+sqlQuery);
    rs = stmt.executeQuery(sqlQuery); 
            while(rs.next())
    {   
    String a=rs.getString(1);
    String b=rs.getString(2);
       String c=rs.getString(3);
       String d=rs.getString(4);
            }
            rs.close();
            stmt.close();
            con.close();
            }catch(Exception e){out.println(e.getMessage());}
      

  10.   

    现在的现象是这样的,当我从第一个if到最后一个else注释掉的,并把SQLquery写成完整的SQL语句,那么程序就正常执行了!这就说明,程序的整个大的结构是没得问题的,问题出在那些if else中,但是我又不能通过System打印信息,所以不知道if else哪儿错了!我也不会高阶的调试手段!麻烦解答的同志解释得详尽点啊!
      

  11.   

    String startT = "";
    String endT = "";
    String RecvAccount = "";
    String SenderAccount = "";
    String RecvTime = "";
    String MailTheme = "";
    String startTime = "";
    String endTime = "";
    String sqlQuery = "select * from TabMailLoginAll where ";
    System.out.println("******" + sqlQuery);
    if (startTime.trim().equals("")) {
    sqlQuery = sqlQuery + "TimeLogin between '" + startT + "'";
    } else {
    sqlQuery = sqlQuery + "TimeLogin between '" + startTime + "'";
    }
    System.out.println("******" + sqlQuery);
    if (endTime.trim() == "") {
    sqlQuery = sqlQuery + "and '" + endT + "'";
    } else {
    sqlQuery = sqlQuery + "and '" + endTime + "'";
    }
    System.out.println("******" + sqlQuery);
    if (MailTheme.trim() == "") {
    } else {
    sqlQuery = sqlQuery + "MailTheme = '" + MailTheme + "'";
    }
    System.out.println("******" + sqlQuery);
    if (RecvAccount.trim() == "") {
    } else {
    sqlQuery = sqlQuery + "and RecvAccount = '" + RecvAccount + "'";
    }
    System.out.println("******" + sqlQuery);
    if (SenderAccount.trim() == "") {
    } else {
    sqlQuery = sqlQuery + "and SenderAccount = '" + SenderAccount + "'";
    }
    System.out.println("******" + sqlQuery);
    if (RecvTime.trim() == "") {
    } else {
    sqlQuery = sqlQuery + "and RecvTime = '" + RecvTime + "'";
    }
    System.out.println("******" + sqlQuery);
    我把你的程序改成这样,可以正确的输出。
    搞不明白你那咋回事了。。
    把你的QQ说出来,我加你,远程帮你调。。