应该还要关闭ResultSet和PreparedStatement对象吧~
http://kaqi.javaeye.com/blog/265173我是这样理解的,如果真是这样出错的话,上面数据库联接查询的代码就无效,所以下面的flag变量就没改变,还是原来的初始值.不知道对不对,有待证实~

解决方案 »

  1.   

    你为什么就不看看你所传过去的userid 和password 是否存在值吗??很明显你的这两个值是null,如果你是用eclipse开发的话,你用在
    String userid = request.getParameter("userid") ; // 接收表单参数
    String password = request.getParameter("password") ; // 接收表单参数加上System.out.println(userid"+"password);看看在控制台上输出的是什么就知道了,你说无论是输入对的还是错的用户密码都没错都是登陆失败,你就应该想到了你的值很可能就没有传过去。不信你将你的正确的密码
    String userid = “你的用户名” ; // 接收表单参数
    String password = “你的密码” ; // 接收表单参数
    输入正确的情况下,看看还是登录失败吗?其实我觉得你的问题不是出在程序上,而是你对request的不熟悉,你还是要去好好理解servlet的几大内置对象。在什么时候用request才对。还有处理错误的方法有很多,不会看堆栈里面的信息可以打印出来嘛。呵呵……加油啊。
      

  2.   

    String sql = "SELECT userid,password FROM tuser WHERE id=? AND pass=?";SQL语句有问题,大哥。
    你明知道你数据库中的列名是 userid 和 password;
    但是你在where 条件中却写的 id       和 pass
    哈哈
    至于为啥没有报错,是因为你在}catch(Exception e){
    }
    中没有关于异常的任何处理。
      

  3.   

    在说一句,想看错误在
    try{

    }catch(Exception e){
    e.printStackTrace();
    }
      

  4.   

    SELECT userid,password FROM tuser WHERE id=? AND pass=?";
    这sql语句写的对不对呀  怎么 userid = id ,password = pass 吗?
      

  5.   

    对,他的这个程序有两个地方出错,一是数据查询语句,二是用户密码根本就没有穿送过去,在开发的过程中,一般都要先保留
    try{}catch(Exception e){
    e.printStackTrace();
    }
    这部分内容,要不然你怎么去查找你的错误信息啊。
      

  6.   

    在说一句,想看错误在
    try{}catch(Exception e){
    e.printStackTrace();
    }
    你是不数据库没有数据或者输入的用户名或密码错误啊