我在做一个小的管理信息系统,在注册登入模块时出现了如下问题,成功注册后(提示成功注册)后台数据库(sql server2000)没有数据,用成功注册的帐号也登入不了关于用户注册的jsp代码如下:
  <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>
<% request.setCharacterEncoding("gb2312"); %>
<%@ page import="com.bwm.db.Condb"%>
<%@ page import="java.util.Date"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>处理登录页面</title>
</head><body>
<%
Date date=new Date();
Condb con=new Condb();
String username=request.getParameter("username");
String Rname=request.getParameter("Rname");
String password=request.getParameter("password");
String email=request.getParameter("email");
String address=request.getParameter("address");
String photo=request.getParameter("photo");
String pass=request.getParameter("pass");
String question=request.getParameter("question");
String str="select Username from tb_User where Username='"+username+"'";
ResultSet rs=con.executeQuery(str);
if(rs.next()){
%>
<script language="javascript">
alert("此用户已经被占用请重新注册");
history.back();
</script>
<%
}else{
String sql="insert into tb_User(Username,Rname,Userpass,Email,Address,Photo,Question,Result,Dattime) values ('"+username+"','"+Rname+"','"+password+"','"+email+"','"+address+"','"+photo+"','"+question+"','"+pass+"','"+date.toLocaleString()+"')";
int temp=con.executeUpdate(sql);
%>
<script language="javascript">
alert("注册成功");
window.location.href=("../index.jsp");
</script>
<%
}con.close();
%>
</body>
</html>

   但奇怪的是在后台可以加入登入帐号并且可以正常登入,所以我觉得是不是这个jsp的数据库插入更新语句有问题,请高手指点下阿

解决方案 »

  1.   

    你的注册成功无论怎样也会弹出来。
    你没有加任何判断的。
    还有LZ的代码写得很乱。JSP里面最好不要出现JAVA代码。
      

  2.   

    你说
    "成功注册后(提示成功注册)后台数据库(sql server2000)没有数据,
    用成功注册的帐号也登入不了关于用户注册的jsp代码如下: "我个人认为你是的数据库操作类的代码编写中
    对于请求没有事务提交造成的你commit一下,就可以了你试试,不行再说
      

  3.   

    请问2楼的,在代码里怎么commit阿?本人的确是个菜鸟,请指点
      

  4.   

    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%> 
    <% request.setCharacterEncoding("gb2312"); %> 
    <%@ page import="com.bwm.db.Condb"%> 
    <%@ page import="java.util.Date"%> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
    <title>处理登录页面 </title> 
    </head> <body> 
    <% 
    Date date=new Date(); 
    Condb con=new Condb(); 
    String username=request.getParameter("username"); 
    String Rname=request.getParameter("Rname"); 
    String password=request.getParameter("password"); 
    String email=request.getParameter("email"); 
    String address=request.getParameter("address"); 
    String photo=request.getParameter("photo"); 
    String pass=request.getParameter("pass"); 
    String question=request.getParameter("question"); 
    String str="select Username from tb_User where Username='"+username+"'"; 
    ResultSet rs=con.executeQuery(str); 
    if(rs.next()){ 
    %> 
    <script language="javascript"> 
    alert("此用户已经被占用请重新注册"); 
    history.back(); 
    </script> 
    <% 
    }else{ 
    String sql="insert into tb_User(Username,Rname,Userpass,Email,Address,Photo,Question,Result,Dattime) values ('"+username+"','"+Rname+"','"+password+"','"+email+"','"+address+"','"+photo+"','"+question+"','"+pass+"','"+date.toLocaleString()+"')"; 
    int temp=con.executeUpdate(sql); 
    %> 
    <script language="javascript"> 
    alert("注册成功"); 
    window.location.href=("../index.jsp"); 
    </script> 
    <% 
    }con.close(); 
    %> 
    </body> 
    </html> 
      

  5.   

    应该是sql语句存在问题  
      

  6.   

    COMMIT   TRANSACTION;
    立即提交
      

  7.   

    int temp=con.executeUpdate(sql);
    temp你没有判断啊,不管是否插入成功,
    注册成功的话总是会弹出的,而且SQL语句不应该
    写在JSP页面上,这样不利于代码的维护和扩展.
      

  8.   

    我教你个处理方法吧,以后出现此类问题就这样处理,绝对没问题。
    String sql="insert into tb_User(Username,Rname,Userpass,Email,Address,Photo,Question,Result,Dattime) values ('"+username+"','"+Rname+"','"+password+"','"+email+"','"+address+"','"+photo+"','"+question+"','"+pass+"','"+date.toLocaleString()+"')"; 
    System.out.println(sql);
    把sql语句打印出来就可以啦。
    然后在自己调试。