如果在SQL中需要同时执行多个SQL语句,而且其中任意一个SQL执行失败其他执行过的都撤销,就需要用到事务,jdbc,Oracle中使用事务是如下方式。
Connection conn=DriverManager.getConnection(url); try { //设置自动提交模式为否 conn.setAutoCommit(false); String sql="update user set userId="+id; String sql2="update user set username='xxx' and userid="+id; conn.prepareStatement(sql).execute(); conn.prepareStatement(sql2).execute(); //执行到这儿说明执行成功,无任何错误,手动提交事务 conn.commit(); return true; //如果出错就执行异常 } catch (Exception e) { //回滚事务,撤销在当前事务中进行的所有更改, conn.rollback(); e.printStackTrace(); return false; } finally{ conn.close(); }
这样只有所有SQL语句都执行成功后才能提交事务,改变结果,否则就撤销事务,更改失效。