我的无法更新啊,d的值一直是0,那些值可以得到的
究竟是怎么回事。。请大家帮帮忙
private Connection con;
    public ZhuCeBean()
{
con= Connecter.getConnection();
}
    //修改用户
    public void alter(String sid,String upwd,String age,String oicq,String email,String city)
    {
     try
{
       System.out.println("abcd");
PreparedStatement ps1=con.prepareStatement("update users set upwd=?, age=?, oicq=?, email=?, city=? where sid=?");
      ps1.setString(1, upwd);
      ps1.setString(2, age);
      ps1.setString(3, oicq);
      ps1.setString(4, email);
      ps1.setString(5, city);
      ps1.setString(6, sid);
      
       int d=ps1.executeUpdate();
      System.out.println(d);
      if(d>0)
{
JOptionPane.showMessageDialog(null,"更新成功,现在转入登录界面重新登录!");
System.out.println("abcdefg");
}
             
           
}
     catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
    }

解决方案 »

  1.   

    同样的注册代码却可以执行
    //增加新用户
    public void addusers(String sid,String upwd,String age,String oicq,String email,String city)
    {
    try 
    {
    //获得预编译查询器
    PreparedStatement ps=con.prepareStatement("insert into users values(?,?,?,?,?,?)");
    ps.setString(1, sid);
    ps.setString(2, upwd);
    ps.setString(3, age);
    ps.setString(4, oicq);
    ps.setString(5, email);
    ps.setString(6, city);
    int r=ps.executeUpdate();

    if(r>0)
    {
    JOptionPane.showMessageDialog(null,"恭喜您,成功注册,现在转入登录界面重新登录!");

    }

    }
    catch (SQLException e) 
    {
    JOptionPane.showMessageDialog(null, "该用户名已被注册,请重新输入!");

    }
     
    }
      

  2.   

    where sid=?可以肯定,没有满足你的sid条件的记录,你打印sid看看吧,比如System.out.println("sid='"+sid+"'");加上单引号是为了看看sid是否有空格等还有,估计你的sid是数字吧,为何不用呢?
      

  3.   

    你sid 的哪个值 在数据库中有 记录吗.
      

  4.   

    如果SQL语句有错误应该会抛异常的吧,但是我的没有抛任何的异常
    sid是用户名啊,而且是唯一的。。
    我刚按照2楼的试过了,sid值已经传过来了,是表中存在的sid
      

  5.   

    我刚把sid=?改成了某个用户名,居然更新成功。但究竟是怎么回事啊,传的值会改变,我刚用了trim方法还是不行。