当前位置:编程学习 > JSP >>

哪位高手帮我看看这段代码????关于Jsp和数据库的。

<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.sql.*" %> <% String userid=new String(request.getParameter("userid")); String newpwd=request.getParameter("newpwd"); boolean flag=true; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:kucun","",""); Statement stmt=con.createStatement(); ResultSet rs = stmt.executeQuery("select * from [user]") ; while(rs.next()) { if(userid.equals(rs.getString(1))){ String sql="update [user] set password='"+newpwd+"' where userid='"+userid+"'"; int i=stmt.executeUpdate(sql); out.println("<script>alert('修改成功');location.replace('login.jsp');</script>"); flag=true; break; } } if(!flag) { out.println("<script>alert('修改失败,此用户不存在');location.replace('modify.jsp');</script>"); } } catch(Exception e) { out.println(e); } %> <html> <head> <title>修改结果</title> </head> <body background="images/1.jpg"> </body> </html> 当输入的用户名不存在时,为什么不会显示修改失败,此用户不存在????
答案:我先给你的代码加个注释啊:
  //从请求中取得userid
   String userid=new String(request.getParameter("userid")); 
   //从请求中取得newpwd
   String newpwd=request.getParameter("newpwd");
   //声明一个标识对象,在update语句执行成功时,flag为true
   boolean flag=true;

简单的分析下,根据你的代码,你希望的是当flag = false时,alert修改失败,但是,在你的代码里,没能发现有将flag变为false的逻辑操作,所以有两个建议:
1:将flag 初始化值设为false,
 boolean flag=false;//旨在修改成功了,变以true,否则默认为修改失败
2:      if(userid.equals(rs.getString(1))){
          String sql="update [user] set password='"+newpwd+"' where userid='"+userid+"'";
          int i=stmt.executeUpdate(sql);
          out.println("<script>alert('修改成功');location.replace('login.jsp');</script>");
          flag=true;
          break;
         }
给这个if加个else:
if(userid.equals(rs.getString(1))){
}else{
flag=false;
}

推荐第一种
其他:你一开始的flag应设为false,否则flag永远为真 

上一个:a.jsp里有个<iframe src="b.jsp"> a.jsp里向b.jsp里传个String型的参数, 两个jsp里代码该怎么写?怎么用?
下一个:xmlhttp.responseText这是返回的一个集合 在js中如何编写代码遍历这个集合把数据显示在jsp上啊?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,