日期:2014-05-18  浏览次数:20654 次

两个SQL设成一个事务时报错,系统回滚
Connection conn = null;
PreparedStatement pstmt = null;

conn=DbManager.getConnection();
conn.setAutoCommit(false);

  String sql2="insert into 。。。。。。。。。。。"

System.out.println(sql2);
pstmt=conn.prepareStatement(sql2);
pstmt.executeUpdate();

  String sql3="update ..................."

System.out.println(sql3);
pstmt=conn.prepareStatement(sql3);
pstmt.executeUpdate();

conn.commit(); 

运行时报错:
[07-10-2 23:23:23:016 CST] 7af7acaa LocalTransact E WLTC0033E: 在清除未解析 LocalTransactionContainment 时,资源 jdbc/msdsn2 回滚。
[07-10-2 23:23:23:016 CST] 7af7acaa LocalTransact E WLTC0032E: 一个或多个资源回滚。一个未解析的 LocalTransactionContainment 有一个未解析的回滚操作。
[07-10-2 23:23:23:016 CST] 7af7acaa WebAppTransac E SRVE0183E: 由于 setRollbackOnly 导致 LocalTransaction 回滚
[07-10-2 23:23:23:016 CST] 7af7acaa WebGroup E SRVE0026E: [Servlet 错误]-[LocalTransaction rolled-back due to setRollbackOnly]:com.ibm.ws.LocalTransaction.RolledbackException

------解决方案--------------------
你的数据库的引擎支持回滚么?
DatabaseMetaData md = con.getMetaData();
return md.supportsTransactions();
用这个语句实下
------解决方案--------------------
在Web服务中使用?