问题描述
publicstaticbooleanUpdate(Stringdb,ArrayList<String>sql){Connectioncon=DbConnection.getConnection("db");;Statementpstmt=null;try{pstmt=con.createStatement();con.setAutoCommit(false);for(inti=0;i<sql.size();i++){System.out.println("sql:"+sql.get(i).toString());intr=pstmt.executeUpdate(sql.get(i));if(r<0){con.rollback();returnfalse;}}con.commit();}catch(SQLExceptionex){System.out.println("更新失败!"+ex.getMessage());try{System.out.println("回滚!");con.rollback();}catch(SQLExceptionex2){System.out.println("回滚失败!"+ex2.getMessage());returnfalse;}returnfalse;}finally{try{con.setAutoCommit(true);pstmt.close();con.close();}catch(SQLExceptionex1){ex1.printStackTrace();}}returntrue;}各位大哥,小弟用的mysql5.0,一共有4条语句,被放在一个集合里,最后一条语句有语法错误,调用这个方法的时候,执行到第四条的时候应该报错且回滚。但不知道为什么前3条都执行了,没有回滚????先谢谢各位了!
解决方案
解决方案二:
if(r<=0){
解决方案三:
程序是在catch里出错的,在catch里执行了con.rowBack(),但是数据并没有恢复,不知道为什么。