一、前言
数据库事务是执行业务的每个逻辑单元一系列操作,可由一个或多个SQL语句组成。如执行的SQL都能被正确的执行,则这批SQL提交将被生效,否则都不成功,通过这样的事务控制有效的保障了数据库数据的完整一致性。对于JDBC提供了事务的实现控制,默认情况事务是自动提交的,所以每次提交executeUpdate方法时都会自动提交事务操作。如果前面提交到数据库数据自动生效,后面逻辑单元的SQL提交报错,这样就会因为非功能性问题(服务器宕机、硬件瓶颈等)破坏业务系统流程数据有效进行。解决这样的方法,先关闭JDBC自动提交功能,通过程序代码段进行控制,发生异常回滚代码。
二、代码示例
public static void main(String[] args){ @b@ Connection conn=null; @b@ try{@b@@b@ Class.forName("oracle.jdbc.driver.OracleDriver");@b@ String url="jdbc:oracle:thin:@localhost:1521:xwood";@b@ conn=DriverManager.getConnection(url,"test","123456");@b@ //关闭自动提交@b@ conn.setAutoCommit(false);@b@ Statement stmt=conn.createStatement();@b@ //执行一批sql提交操作@b@ stmt.executeUpdate("insert into user(1,'张三',32)");@b@ stmt.executeUpdate("insert into user('2',李四,23)");@b@ stmt.executeUpdate("update user set name='test' where id=3");@b@ //如不发生异常就提交事务@b@ conn.commit();@b@ stmt.close();@b@ conn.close(); @b@ @b@ }catch(Exception e){ @b@ try{@b@ conn.rollback();//发送异常回滚@b@ }catch(Exception ee){@b@ ee.printStackTrace();@b@ }@b@ @b@ }@b@ @b@}
三、总结
事务控制执行一批SQl整体都被正确执行,已保障整体业务流程数据的完整一致性。对于JDBC事务,具体使用commit和rollback方法执行事务的提交和回滚