先贴一个代码片段:
........
String sql="select * from bingl where cwname='"+name+"' or cwsuo='"+owner+"'";  
System.out.print(sql);
ResultSet rs= bd.getRs(sql);//调用了bd的方法,下面有方法的实现
HttpSession session=request.getSession(true);
if(rs.next())
{
 session.setAttribute("name",name);
 session.setAttribute("owner",owner);
 request.getRequestDispatcher("/Liaox.jsp").forward(request,response);
 }
   else
  {request.getRequestDispatcher("/liaoc.jsp").forward(request,response);}
   rs.close();
.........
public ResultSet getRs(String sql) throws SQLException{            try{ 
             getConnection();
             rs=stmt.executeQuery(sql);
              return rs; }
             catch(Exception e){
             System.out.print(e);
             return null;
          }
     }
..........
大体意思就是使用executeQuery判断查询语句的返回结果,若果rs.next()为真,就跳转至/Liaox.jsp,否则跳转至/Liaoc.jsp。
我不明白的是rs.next什么时候为真,因为我想实现的是cwname或者cwsuo中任意一个有值就可以跳转到/Liaox.jsp,但是实际执行的时候必须cwname和cwsuo都有值才能跳转至我想要的那个,不管其中那个有值,都会跳转至else指向的页面。求解释!!!!!
ps:我说的有值是指在数据库中有对应项,不知各位大侠看明白了木有

解决方案 »

  1.   

    报的是什么错?可以自己单步一下看看怎么回事
    rs.next()  就是指针挪到下一个,也就是说查到了至少一个值,这时为真
      

  2.   

    木有出错,就是逻辑不对,我设计的时候是准备查询的时候cwname或者cwsuo任意输入一个就可以进行查询。但是按照上面的代码,两个必须全部输入,否则查询不到结果。不报错的。
      

  3.   

    是不是你这个sql语句有问题
      

  4.   

    rs.next什么时候为真?
    if(rs.next())
    {
      system.out.print(“true”);
      }
      else
      {
    system.out.print(“false”);}
      

  5.   

    rs  是ResultSet
    是根据查询语句返回的集合
    rs.next()就是说这个集合有最少一个值
    这个时候才会为真
      

  6.   

    照你说的这个有个简单的方法就是就是把sql语句中的“=”换成"like",应该可以满足你的要求
      

  7.   

      rs.next()相当于是遍历一次select语句查询出来的结果,这就像从一堆来看,只要那一堆有有东西,那他就是true,如果一点都没有那么就是false
      

  8.   

    if改成while看看~
    用if只取一次