注册 登录
编程论坛 J2EE论坛

求高手!!我在学着做个JSP的论坛,但在查询数据库时遇到问题了!!!

尨羽 发布于 2011-01-05 22:21, 858 次点击
   代码如下:本来我想实现获取传递过来的表单值,uname1和upw1,然后查询数据库,如果数据库没就弹出提示,自动跳到登陆页面。如果数据库有就显示登陆成功,弹出提示,自动跳到首页。   我下面的代码是错的,我运行它,它就直接提示登陆成功,跳到首页了,上面的代码我看都没执行!!我知道错,就是不知点改了。···搞了很久都不行··

<body>
<%
String sql="";
String uname1="";//用户名
String upw1="";//密码

try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
    Connection con = DriverManager.getConnection("jdbc:odbc:jsp");//建立连接
 Statement stmt = con.createStatement();
 ResultSet rs = null;

 request.setCharacterEncoding("utf-8");
 uname1=request.getParameter("uname1");
 upw1=request.getParameter("upw1");
        sql = " select * from users where uname='uname1'";
            //把所有的满足条件的学生记录显示出来
        rs= stmt.executeQuery(sql);
          if (rs != null ){
  if(rs.next())
                {
                    out.print("你还没注册!页面会在5秒钟内自动跳转到登录页面");
   response.setHeader("Refresh","3;url=login.jsp");
                 }
               else {
      out.print("登录成功!页面会在3秒内自动跳转到首页");
   response.setHeader("Refresh","3;url=index.jsp");
  }
        rs.close();
    stmt.close();
    con.close();
 }
        }
catch(Exception e){
           e.printStackTrace(System.err);
              }

%>
    </body>


来源: http://www.
3 回复
#2
wzh5453946222011-01-06 21:33
sql = " select * from users where uname='uname1'";
你这个sql语句写错了吧。uname1作为变量不能放到引号里面去,这样就会当成去数据库查用户名为uname1的用户,所以你把sql语句改成
sql = "select * from users where uname = '" + uname1 + "'";
程序代码:
rs= stmt.executeQuery(sql);
          if (rs != null ){
              if(rs.next()){
                    out.print("你还没注册!页面会在5秒钟内自动跳转到登录页面");
                    response.setHeader("Refresh","3;url=login.jsp");
                 } else {
                   out.print("登录成功!页面会在3秒内自动跳转到首页");
                   response.setHeader("Refresh","3;url=index.jsp");
                  }
            rs.close();
            stmt.close();
            con.close();
            }

还有就是你把上面这一段改成:
程序代码:
if(rs.next()) {        //这句是说可以找到这个用户

        if(rs.getString("pwd").equals(upw1)) {        //这个是判断用户密码是否相等

            out.print("登录成功!页面会在3秒内自动跳转到首页");
            response.setHeader("Refresh","3;url=index.jsp");

        }else {
            out.print("用户密码错误!!!请重新输入密码");
            response.setHeader("Refresh","3;url=login.jsp");
        }

} else {        //如果没有这个用户则跳转到登录页面

         out.print("你还没注册!页面会在5秒钟内自动跳转到登录页面");
         response.setHeader("Refresh","3;url=login.jsp");
}

rs.close();
stmt.close();
con.close();

还有下次记得把代码格式一下,要不然很不好看。。。
#3
qingzhu57532011-01-12 22:03
uname1=request.getParameter("uname1");
upw1=request.getParameter("upw1");
sql = " select * from users where uname=uname1 and password=upw1";
后边直接用if(rs.next())判断就可以了,如果为真,就是登陆成功,否则提示失败就可以了
#4
zlk2011-05-13 11:31
就如楼上所说,代码写的没有什么层次感。看起来比较累
1