我不是很有空研究,但是你的代码有明显的弱SQL语句漏洞,另外判断语句应该类似这样:if (rs.next()){
  //成功
}else{
  //失败
}

解决方案 »

  1.   

    if(rs.next())
    {
    //说明该用户存在且密码正确
    out.println(rs.getString("TecherID"));
    }
    else
    {
                               //用户不存在或密码不正确
    response.sendRedirect("main.jsp");
    rs.close();
    stmt.close();
    cn.close();
    }
      

  2.   

    MS Server2000应该用这个驱动
    com.microsoft.jdbc.sqlserver.SQLServerDriver
      

  3.   

    无效的光标状态---说明连接数据库没有错,并且rs已经不为null
    这个错误是因为rs的光标没有移动到合法的位置就调用rs.getXXX()造成的。
    你用 if(rs.next()){ }else{
      
    }
    应该没问题的。
      

  4.   

    这样写或许更严密!!    
    if(rs!=null && rs.next()){}else{
      
    }
      

  5.   

    可以试试楼上if(rs!=null && rs.next()){//--------}的办法
    如果还是不行,我觉得可能是驱动程序的原因,换个驱动怎么样。或者使用jdbc驱动,不用jdbc-odbc桥
      

  6.   

    哦,你为什么要用
    cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    你需要更新结果集吗?强烈建议你先改成cn.createStatement()试试看,再说另外注意:
    JDBC返回的字段必须按顺序访问,并且只能访问一次,如
    rs.getString("password");
    rs.getString("TecherID");
    这就会出错
    rs.getString("TecherID");
    rs.getString("TecherID");
    这也会出错
      

  7.   

    你主要是错在空光标上,你应该首先判断rs是不是为空,如果都是空了。。你还怎么下移啊??
    if rs != null then {
      rs.next();
      在这里写
      .............
      ...............
    } else {
      out.println("rs is null")
    }