我是根据两个选择框向数据库提交信息,并查询相关信息,可是再内部的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>");
}
%>
<%
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>");
}
%>
if(roomnum1 != "" && name1 == "")//
rs4 = dbinfo.select(sqlb);
else if(roomnum1 != "" && name1 == "")//两个判断条件都一样,它当然一直执行最后一个else了
rs4 = dbinfo.select(sqla);
else
rs4 = dbinfo.select(sqlc);
rs4 = dbinfo.select(sqlb);
else if(roomnum1 != "" && name1 == "")
rs4 = dbinfo.select(sqla);
else
rs4 = dbinfo.select(sqlc);
判断条件一样啊!
还有就是建议
使用1楼朋友说的方法
"".equals(roomnum1)
这样为空还是能够执行的你先修改修改
有问题再说
rs4 = dbinfo.select(sqlb);
else if(roomnum1 == "" && name1 != "")
rs4 = dbinfo.select(sqla);
else
rs4 = dbinfo.select(sqlc);其实这样,笔误,不好意思,怎么解决,换成equals也不行
2.注意sql语句单词间的间隔
3.把你的先换成equals,再进行其他的。如果不是这样你的程序即使正确之后还是会出问题
4.把出错的root cause贴出来看看。
5.打印下rs和rs.next()
if(roomnum1 != "" && name1 == "")
rs4 = dbinfo.select(sqlb);
else if(roomnum1 != "" && name1 == "")
rs4 = dbinfo.select(sqla);比较是equals("")
而且你if_else_if 里条件是一样的,第一个不满足 第二个肯定不满足。 那只有最后个了。
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)