我是根据两个选择框向数据库提交信息,并查询相关信息,可是再内部的if_else判断中始终都是执行最后一句,这是为什么啊,谢谢
<%
String roomnum1 = request.getParameter("room");
String name1 = request.getParameter("guest_name");
name1 = new String(name1.getBytes("iso-8859-1"),"UTF-8");String sqla = "select * from guest where name='"+name1+"'";
String sqlb = "select * from guest where roomNum='"+roomnum1+"'";
String sqlc = "select * from guest";
ResultSet rs4 = null;
if(roomnum1 != "" && name1 == "")
rs4 = dbinfo.select(sqlb);
else if(roomnum1 != "" && name1 == "")
rs4 = dbinfo.select(sqla);
else
rs4 = dbinfo.select(sqlc);while(rs4.next())
{
out.print("<tr>");
out.print("<td>    "+rs4.getString("name")+"</td>");
out.print("<td>    "+rs4.getString("age")+"</td>");
out.print("<td>   "+rs4.getString("sex")+"</td>");
out.print("<td>  "+rs4.getString("country")+"</td>");
out.print("<td>     "+rs4.getString("certNum")+"</td>");
out.print("<td>     "+rs4.getString("roomNum")+"</td>");
out.print("<td> "+rs4.getDate("arrive")+"</td>");
out.print("<td>  "+rs4.getDate("leave")+"</td>");
out.print("</tr>");
}
%>

解决方案 »

  1.   

    用"".equals(roomnum1)  这样去比较字符串
      

  2.   


    if(roomnum1 != "" && name1 == "")//
    rs4 = dbinfo.select(sqlb);
    else if(roomnum1 != "" && name1 == "")//两个判断条件都一样,它当然一直执行最后一个else了
    rs4 = dbinfo.select(sqla);
    else
    rs4 = dbinfo.select(sqlc); 
      

  3.   

    还有建议楼主 做判断的时候最好 if(null!=roomnum||roomnum.trim().equals(""))或if(null!=roomnum||roomnum.isEmpty())
      

  4.   

    if(roomnum1 != "" && name1 == "") 
    rs4 = dbinfo.select(sqlb); 
    else if(roomnum1 != "" && name1 == "") 
    rs4 = dbinfo.select(sqla); 
    else 
    rs4 = dbinfo.select(sqlc);
    判断条件一样啊!
    还有就是建议
    使用1楼朋友说的方法
    "".equals(roomnum1)
    这样为空还是能够执行的你先修改修改
    有问题再说
      

  5.   

    if(roomnum1 != "" && name1 == "")
    rs4 = dbinfo.select(sqlb);
    else if(roomnum1 == "" && name1 != "")
    rs4 = dbinfo.select(sqla);
    else
    rs4 = dbinfo.select(sqlc);其实这样,笔误,不好意思,怎么解决,换成equals也不行
      

  6.   

    1.像这样多条件判断语句的东西还是注意下使用括号吧!
    2.注意sql语句单词间的间隔
    3.把你的先换成equals,再进行其他的。如果不是这样你的程序即使正确之后还是会出问题
    4.把出错的root cause贴出来看看。
    5.打印下rs和rs.next()
      

  7.   


    if(roomnum1 != "" && name1 == "") 
    rs4 = dbinfo.select(sqlb); 
    else if(roomnum1 != "" && name1 == "") 
    rs4 = dbinfo.select(sqla);比较是equals("")
     
    而且你if_else_if  里条件是一样的,第一个不满足 第二个肯定不满足。  那只有最后个了。
      

  8.   

    拼SQL语句吧,String str="Select * from guest where" 
    if(roomnum1==''&&name=='') //同时为空

        str="Select * from guest ";
    }
    else if(name='')//roomnum1 不为空
    {
      str=str+"roomnum1 ='"+roomnum1+"'";
    }
    else if(roomnum1='')//name不为空
    {
      str=str+"name='"+name1+"'"; 
    }else//同时不为空
    str=str+"roomnum1 ='"+roomnum1+"'"+"and name='"+name1+"'";rs4 = dbinfo.select(str)