标题:求高手!!我在学着做个JSP的论坛,但在查询数据库时遇到问题了!!!
只看楼主
尨羽
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-1-5
结帖率:0
已结贴  问题点数:20 回复次数:3 
求高手!!我在学着做个JSP的论坛,但在查询数据库时遇到问题了!!!
   代码如下:本来我想实现获取传递过来的表单值,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.
搜索更多相关主题的帖子: 数据库 用户名 body 
2011-01-05 22:21
wzh545394622
Rank: 6Rank: 6
等 级:侠之大者
帖 子:60
专家分:410
注 册:2009-10-7
得分:10 
 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();

还有下次记得把代码格式一下,要不然很不好看。。。
2011-01-06 21:33
qingzhu5753
Rank: 4
等 级:业余侠客
帖 子:64
专家分:248
注 册:2009-10-28
得分:10 
uname1=request.getParameter("uname1");
upw1=request.getParameter("upw1");
sql = " select * from users where uname=uname1 and password=upw1";
后边直接用if(rs.next())判断就可以了,如果为真,就是登陆成功,否则提示失败就可以了
2011-01-12 22:03
zlk
Rank: 2
等 级:论坛游民
帖 子:9
专家分:17
注 册:2011-5-13
得分:0 
就如楼上所说,代码写的没有什么层次感。看起来比较累
2011-05-13 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-330614-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.198389 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved