i=rsflag.getString("flag");
            if(i.equals("1"))
改成这样 应该能解决

解决方案 »

  1.   

    你数据库中的flag是什么类型的?  如果是bit型,好像不能用(i==1)作为判断。
      

  2.   

    String sqlflag="select * from logflag where logname='"+logName+"'";
        ResultSet rsflag=usersBean.executeQuery(sqlflag);
        try{
              while(rsflag.next()){
                i=rsflag.getInt("flag");
                if(i==1){
                   //若已经登陆则进入登陆信息错误的页面
                    response.sendRedirect("loginerror.jsp");
                 }else{
                   response.sendRedirect("index.jsp");
                   }
              }
            }catch(Exception e){}
      

  3.   

    是呀,你FLAG是什么类型的,看清楚了再比较,可能就是那里的错误
      

  4.   

    System.out.println(i==1); 看一下是否返回true,否則就有問題了
      

  5.   

    上面的观点对吗?我觉得rs.getInt之后的值肯定是int,楼主的判断应该没问题吧?
    我觉得问题可能出在查询的结果是否有多条记录?其中最后一条的logFlag说不定是1
      

  6.   

    同意treeClimber(我以我血荐轩辕)的观点不知道楼主的"logName"是不是唯一的.如果不是的话,应该还要加别的判断条件.另:不知楼主有没有考虑过意外下线的情况:)
      

  7.   

    多谢楼上各位,logname都是唯一的,我用的数据库是oracle,flag类型是number的我也考虑过以外下线,但是现在好象还没有比较好的解决方法不知道意外下线怎么改变flag值,比如不注销就关闭窗口!!麻烦大家也帮我想下
    谢谢拉!!!
      

  8.   

    大家顺便看下类似的这个问题搞定后一块解决http://expert.csdn.net/Expert/topic/3037/3037572.xml?temp=6.412905E-02
      

  9.   

    多谢给位:)问题解决了其实还是==和equals()的区别
    比较的是对象里边的值,而不是他们的引用flag我改成了vchar型结帖