问题描述
先贴源代码:ResultSetrs=null;Stringname=request.getParameter("name");Stringpassword=request.getParameter("password");Stringsqlstring="select*fromadminswhereAdmname='"+name+"'andAdmpwd='"+password+"'";rs=sqltest.executeQuery(sqlstring);if(rs!=null){while(rs.next()){request.getSession(true);Stringchk="true";session.putValue("Enter",chk);response.sendRedirect("mainform.jsp");}}else{Stringerrmsg="error1";response.sendRedirect("login.jsp?errmsg="+errmsg);}运行输入用户名和密码,总是出现:您输入管理员帐号或者密码不正确!!,但是用户名和密码肯定是对的呀!各位大侠帮着看下,程序哪里错啦?谢谢啦!!!
解决方案
解决方案二:
不要null的判断if(rs!=null){即使没有数据,也不会返回null的
解决方案三:
1、最好在rs=sqltest.executeQuery(sqlstring);之前打印出sqlstring拿到数据库看看有没有?是不是空格啊什么的最好trim()一下。。2、while(rs.next())为什么用while呢?if()就好了嘛。。
解决方案四:
引用1楼justlearn的回复:
不要null的判断if(rs!=null){即使没有数据,也不会返回null的
正解返回包含给定查询所生成数据的ResultSet对象;永远不能为null,如果没有查询到信息,返回一个next()为false的ResultSet对象
解决方案五:
把你的错误信息发上来,
解决方案六:
ResultSetrs=null;Booleanflag=false;Stringname=request.getParameter("name");Stringpassword=request.getParameter("password");Stringsqlstring="select*fromadminswhereAdmname='"+name+"'andAdmpwd='"+password+"'";rs=sqltest.executeQuery(sqlstring);while(rs.next()){flag=true;request.getSession(true);Stringchk="true";session.putValue("Enter",chk);response.sendRedirect("mainform.jsp");}if(flag){Stringerrmsg="error1";response.sendRedirect("login.jsp?errmsg="+errmsg);}
解决方案七:
ResultSetrs=null;Booleanflag=false;Stringname=request.getParameter("name");Stringpassword=request.getParameter("password");Stringsqlstring="select*fromadminswhereAdmname='"+name+"'andAdmpwd='"+password+"'";rs=sqltest.executeQuery(sqlstring);while(rs.next()){flag=true;request.getSession(true);Stringchk="true";session.putValue("Enter",chk);response.sendRedirect("mainform.jsp");}if(!flag){Stringerrmsg="error1";response.sendRedirect("login.jsp?errmsg="+errmsg);}
解决方案八:
源代码:ResultSetrs=null;Stringname=request.getParameter("name");Stringpassword=request.getParameter("password");Stringsqlstring="select*fromadminswhereadmname='"+name+"'andadmpwd='"+password+"'";rs=sqltest.executeQuery(sqlstring);if(rs.next()){request.getSession(true);Stringchk="true";session.putValue("Enter",chk);response.sendRedirect("mainform.jsp");}else{Stringerrmsg="error1";response.sendRedirect("login.jsp?errmsg="+errmsg);}运行后出现:HTTPStatus500---------------------------------------------------------------------------------typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionorg.apache.jasper.JasperException:AnexceptionoccurredprocessingJSPpage/admin/chkadmin.jspatline129:Stringpassword=request.getParameter("password");10:Stringsqlstring="select*fromadminswhereadmname='"+name+"'andadmpwd='"+password+"'";11:rs=sqltest.executeQuery(sqlstring);12:if(rs.next())13:{14:request.getSession(true);15:Stringchk="true";
解决方案九:
改成这样试试,不用flag,如果还是跳转到错误页面,说明你sql查询出来就是没有记录你可以debug下,查下rs到底有没有取到值if(rs.next()){request.getSession(true);Stringchk="true";session.putValue("Enter",chk);response.sendRedirect("mainform.jsp");}else{Stringerrmsg="error1";response.sendRedirect("login.jsp?errmsg="+errmsg);}
解决方案十:
你把这句sql直接去数据库运行下看看,是不是字段名什么写错了
解决方案十一:
用debug跟一下应该是细节问题