代码如下。每次都会更新值,ROLLBACK没用么?
Connection  conn = dataSource.getConnection();
conn.setAutoCommit(false);
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement("update  test set name=? where id=?");
pstmt.setString(1, "GG");
pstmt.setInt(2, 3);
pstmt.executeUpdate();
conn.rollback();

解决方案 »

  1.   

    更新是 commit() 啊
      

  2.   

    不执行更新操作才用
    conn.rollback();
    你应该用
    conn.commit();
      

  3.   

    不是。我就是不想让他更新值,我如果commit那更新是OK的。可我现在是rollback它照样给我更新值。。就有问题了啊。
      

  4.   

    要加个条件啊!
      if(z==1 )
    {
    conn.commit();//事務提交
     }
     else
    {
     conn.rollback();//操作不成功回*
    }
      

  5.   

    我纯写JDBC 也不行。。
                    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/jpetstore";
    Connection conn = DriverManager.getConnection(url, "root", "root");
    conn.setAutoCommit(false);
    PreparedStatement pstmt = null;
    pstmt = conn.prepareStatement("update  test set name=? where id=?");
    pstmt.setString(1, "ZZZ");
    pstmt.setInt(2, 3);
    pstmt.executeUpdate();
    conn.rollback();
      

  6.   


    conn.setAutoCommit(false);
    Statement stmt=null;
    stmt =conn.createStatement(1005,1008);
    String sql="update test set name='"+gg+"' where id=3);
    int zz=stmt.executeUpdate(sql);
     if(z==1 )
        {
        conn.commit();//事務提交
         }
         else
        {
         conn.rollback();//操作不成功回*
        }还不行的话,从其他方面找原因!
      

  7.   

    不好意思
    int zz=stmt.executeUpdate(sql);
    应改为
    int z=stmt.executeUpdate(sql);
      

  8.   

    我不要它commit 这个zz肯定是1啊。。我就是想让他不更新其他方面的话哪方面呢。
      

  9.   

    String sql="update test set name='"+gg+"' where id=3);
    改为
    String sql="update test set name='"+gg+"' where id=3";
      

  10.   

    3306?????
    MYSQL吧,表用的是MyIsam吧?只有InnoDB才支持事务
      

  11.   

    我一看就知道出问题啦
        请问你一下,你事务都没开启,你何来的rollback()呀。
        真没搞懂
      

  12.   

    更新后又rollback,意义何在,干脆别更新了,岂不省事。
      

  13.   

    。。我是在测试。本来在看spring的事务 发现没rollback。。没看到spring有什么问题就写了个直接jdbc跑的来测。也没rollback才来发帖请问大家的
      

  14.   

    mysql数据库默认情况下,是自动提交的
    先关闭自动提交功能
    set autocommit=0;然后再执行rollback就可以了