public static User validate(String username,String password) throws UserNotFoundException, PasswordNotCorrectExeception {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
User u = null;
try {
conn = DB.getConn();
stmt = DB.getStmt(conn);
String sql = "select password from user where username = '" + username + "'";
rs = DB.executeQuery(stmt, sql);

if(!rs.next()) {
throw new UserNotFoundException();
} else if (!rs.getString("password").equals(password)) {
throw new PasswordNotCorrectExeception();
} else {
u = new User();
u.setAddr(rs.getString("addr")); //就是这里开始报错,找不到addr,但是数据库
//确实有addr,而且把下面额放上来,都是一样报错,找不到行。
u.setId(rs.getInt("id"));
u.setPassword(rs.getString("password"));
u.setPhone(rs.getString("phone"));
u.setUsername(rs.getString("username"));
u.setRdate(rs.getTimestamp("rdate"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return u;
}

解决方案 »

  1.   

    这是一段从数据库中拿出用户名和密码的代码,要是用户名和密码正确,就取出用户并将其赋给一个新的对象,
    现在用户名,密码验证都没问题,但是赋给对象的时候报错。报错的信息如下:java.sql.SQLException: Column 'addr' not found.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1146)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5609)
    at com.shopping.User.validate(User.java:130)
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:65)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:722)
      

  2.   

    这段是login,jsp的代码,调用用的,我已经导入了
    String action = request.getParameter("action");
    User u = null;
    if(action != null && "login".equals(action)) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        try {
         u = User.validate(username,password);//这里报错
        } catch (UserNotFoundException e){
         out.print("用户名不存在!");
         return;
        } catch (PasswordNotCorrectExeception e) {
         out.print("密码不正确!"); 
         return;
        } 
        session.setAttribute("user",u);
        response.sendRedirect("selfservice.jsp");
    }
      

  3.   

    String sql = "select password from user where username = '" + username + "'";这一句,查的只有password一个字段,下面取addr,id什么的当然取不到了。select password,addr,id.....