三、事务处理
为了确保对数据操作的完整和一致,在程序设计时要充分考虑到事务处理方面的问题。
1.JDBC中怎样将多个SQL语句组合成一个事务。
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。
在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。
下面的代码是一个示范:
con.setAutoCommit(false);
PreparedStatement updateSales=con.prepareStatement("UPDATE COFFES SET SALES=? WHERE COF_NAME LIKE ?");
updateSales.setInt(1,50);
updateSales.setString(2,"Colombian");
updateSales.executeUpdate();
PreparedStatement updateTotal=con.prepareStatement("UPDATE COFFEES SET TOTAL =TOTAL+ ? WHERE COD_NAME LIKE ?");
updateTotal.setInt(1,50);
updateTotal.setString(2,"Colombian");
updateTotal.executeUpdate();
con.commit(0;
con.setAutoCommit(true);
2.J2EE中分布式事务处理
在J2EE中,程序里可以使用JTA来调用底层的JTS(JAVA Transaction Service 提供者服务)来处理分布式的事务处理。另外,如果使用EJB,可以通过在描述文件中指定transaction的属性来实现。
有关分布式事务处理的具体内容,请参见J2EE规范。