Java 中对数据库操作时的 回滚

Connection conn=null; 

conn.rollback()就可以回滚 //用jdbc连接数据库 //举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:

public boolean delete(int sID) {//成功删除会返回true;
  dbc = new DataBaseConnection();//根据你自己的方式创建数据库的连接
  Connection con = dbc.getConnection();//得到Connection
  try {
   con.setAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;
   dbc.executeUpdate("delete from xiao where ID=" + sID);//删除
   dbc.executeUpdate("delete from xiao_content where ID=" + sID);//删除
   dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);//删除
   con.commit();//提交JDBC事务,如果没问题,这时才真正的删除了;
   con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式,这是个好习惯;
   dbc.close();//关闭连接
   return true;//删除成功
  }
  catch (Exception exc) {
   con.rollBack();//回滚JDBC事务,出现异常,为保证数据完整性,此次操作回滚,不删除;
   exc.printStackTrace();//输出异常信息;
   dbc.close();//关闭连接
   return false;//删除失败
  }
 } //顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样;
 
 //做添加操作
 Connection con = null;
 PreparedStatement ps = null;
 ResultSet rs = null;
 String tableName = args[0];
 Integer id = JdbcUtil.parseInt(args[1]);
 String name = args[2];
 String command = args[3];
 try{
 con = JdbcUtil.getConnection();
 con.setAutoCommit(false);
 String sql = "insert into "+tableName+
 " values(?,?)";
 ps = con.prepareStatement(sql);
 ps.setInt(1,id);
 ps.setString(2,name);
 ps.executeUpdate();
 con.commit();//手动提交 }catch(Exception e){
 System.out.println(e.getMessage());
 try{
 con.rollback();//手动回滚
 }catch(Exception ex){
 System.out.println(ex.getMessage());
 }
 }finally{
 JdbcUtil.close(rs,ps,con);
 } 
 //做修改操作
 try {
 conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;User=JavaDB;Password=javadb;DatabaseName=northwind);
 //点禁止自动提交,设置回退
 conn.setAutoCommit(false);
 stmt = conn.createStatement();
 //数据库更新操作1
 stmt.executeUpdate(“update firsttable Set Name='testTransaction' Where ID = 1”);

 //数据库更新操作2
 stmt.executeUpdate(“insert into firsttable ID = 12,Name = 'testTransaction2'”);
 //事务提交

 conn.commit();
 }
 catch(Exception ex) {
 ex.printStackTrace();
 try {
 //操作不成功则回退
 conn.rollback();
 }
 catch(Exception e){
   e.printStackTrace();
   }
 }