关于连接数据库的问题,请各位大哥哥看下!

这条检测语句为什么不对啊,是检测我输入的用户名和密码是否于数据库的相等,那两个字段分别是第二个和第三个字段!
**************************************************************************************************
  public boolean checkLogin(String userName, String passwd) {
    PreparedStatement ps = null;
    ResultSet rs = null;
    String sql = "select userName,passwd from bankproject";
    try {
      ps = conn.prepareStatement(sql);
      rs = ps.executeQuery();
      System.out.println(passwd);
      while (rs.next()) {
        if (userName.equals(rs.getString(2)) && passwd.equals(rs.getString(3))) {
          break;
        }
      }
      return true;
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return false;
  }


原因:
你的程序无论怎么检测,都返回true,局部代码改成这样
while(rs.next()){ 
  if(userName.equals(rs.getString(2)) && passwd.equals(rs.getString(3))){ 
    return true; 
  } 
} 
return false;


同时应该增加对资源的释放,异常处理完善。
同时你的编号是1和2,不是2和3, 因为你的sql只有2个字段啊!
完整代码如下
  public boolean checkLogin(String userName, String passwd) {
    PreparedStatement ps = null;
    ResultSet rs = null;
    String sql = "select userName,passwd from bankproject";
    try {
      ps = conn.prepareStatement(sql);
      rs = ps.executeQuery();
      System.out.println(passwd);
      while (rs.next()) {
        if (userName.equals(rs.getString(1)) && passwd.equals(rs.getString(2))) {
          return true;
        }
      }
      return false;
    } catch (SQLException e) {
      e.printStackTrace();
      return false;
    } finally {
      if (rs != null) {
        try {
          rs.close();
        } catch (Exception ex) {}
      }
      if (ps != null) {
        try {
          ps.close();
        } catch (Exception ex) {}
      }
    }
  }
快乐渡过每一天,减肥坚持每一天