JavaBean里的定义
public int register(String username,String psw)
{
    String query = "insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";
int res=0;
try
{
    PreparedStatement ps = this.conn.prepareStatement(query);
    res = ps.executeUpdate();
            
}
catch(Exception e)
{
    this.error = e.toString();

}
return res;
}
Jsp中的调用
String user = request.getParameter("username");
    String passw = td_pjm.md5(request.getParameter("psw"));
    int res = td_pjm.register(user,passw);
      if(res == 0)
      {
      out.println("<script language=\"JavaScript\" type=\"text/javascript\">alert(\"注册失败!\");window.close();</script>");
      }
      else
      {
      out.println("<a href='index.jsp'>返回登录页面</a>");
      }
每次调用都直接弹出注册失败的窗口.请高手指点.非常感谢.

解决方案 »

  1.   

    你把 res == 0 改成 res != 1 看看
      

  2.   

    异常信息呢?打印出来看看。另外,你这样用PreparedStatement简直是把好好的东西糟蹋了。
    拼字符串又麻烦又危险,应该写成 (?,?)
    然后setString(1,useranme)
    setString(2,password);参考我们教程中对这个的解释吧:http://www.family168.com/tutorial/jdbc/html/jdbc-ch-01.html#jdbc-ch-01-06
      

  3.   

    public int register(String username,String psw) 

        String query = "insert into td_pjm_user (username, password) values( username,psw)"; 
    int res=0; 
    try 

        PreparedStatement ps = this.conn.prepareStatement(query);
        ps.setString(1,username);
        ps.setString(2,psw); 
        res = ps.executeUpdate(); 
                 

    你的意思是改成这样对吗?
      

  4.   

    哦,对了,没有异常信息,只是每次直接执行
    if(res == 0) 
          { 
          out.println(" <script language=\"JavaScript\" type=\"text/javascript\">alert(\"注册失败!\");window.close(); </script>"); 
          } 
    这个了.
      

  5.   

    你再执行sql以前打印一下参数的值,这样:
    system.out.println(username+","+psw);
    看一看,值传进来没有。如果有值的话,就手动写一句sql,手动插入到数据库里,看看是不是数据库的问题
      

  6.   

    还是不对啊,MYSQL里的errmsg.txt里全是乱码,啥也看不出来啊.
      

  7.   

    你再执行sql以前打印一下参数的值,这样: 
    system.out.println(username+","+psw); 
    看一看,值传进来没有。 如果有值的话,就手动写一句sql,手动插入到数据库里,看看是不是数据库的问题
    我的处理是在javabean里,这个输出应该写到哪,输出到弹出窗口?不好意思,我是个新手,还请大虾多多指教.
      

  8.   

    "insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";这样的问题
    以后直接把这个SQL的完整语句输出
    然后到数据库的控制台下试
      

  9.   

    我用的是MYSQL命令行的,没有界面,"insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')"; 我试了,在DOS下,好使,插入了一条记录,可是我这个传参的过程有一个MD5的加密过程,所以--
      

  10.   

    直接写在sql语句之前就可以了
    public int register(String user, String psw) {
        PreparedStatement pstmt = null;
        int res = 0;
        try {
    //输出sql语句,会输出到后台要在后台查看
    System.out.println(user + "::::" + psw);
        String sql = " insert into td_pjm_user(username, password) values(?, ?)";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, user);
        pstmt.setString(2, psw);
        res = pstmt.executeUpdate();
        } catch (SQLException e) {
    e.printStackTrace();
    return res;
       } 
       return res;
    }按这样改过以后应该就可以了,我试过了,可以插入的
      

  11.   

    要不然你先把MD5加密去掉,直接传入psw,看看能不能插入,如果可以,可能就是加密以后的数据长度和数据库字段长度的问题了吧
      

  12.   


    方法一:public int register(String username,String psw)  
    {  
        String query = "insert into td_pjm_user (username, password) values( '"+username+"','"+psw+"')";   
    int res=0;  
      try  
     {  
        Statement st = this.conn.createStatement(); 
        st.executeUpdate(query) ; 
        }          
    } 方法二:
    public int register(String username,String psw)  
    {  
        String query = "insert into td_pjm_user (username, password) values( ?,?)";  
    int res=0;  
      try  
     {  
        PreparedStatement ps = this.conn.prepareStatement(query); 
        ps.setString(1,username); 
        ps.setString(2,psw);  
        res = ps.executeUpdate();  
        }          
    }
    以上两种方法都可以实现对数据的插入操作.
    我只是在你写的基础上作了些修改.
    我对你需要注意的地方用红色字标注了.
    我想你应该明白了吧.我是建议你用第一种方法,第一种方法,插入数据安全性比较好.
      

  13.   

    大家的方法我都试过了,都不行,这是咋回事啊,可能问题不是出在这块了,可是我现在也找不到出错的信息啊,tomcat/logs下的stdout文件都是空的,晕了.System.out.println(user + "::::" + psw); 这句话我输出到哪里了?tomcat的后台?
      

  14.   

    我的环境是myeclipse+tomact6.0 输出到myeclipse的console的窗口里面,也是tomact的后台.