如果在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语句都执行成功后才能提交事务,改变结果,否则就撤销事务,更改失效。