星期二, 六月 21, 2005

MySQL Transaction JDBC tips

首先:table type必须是:InnoDB,mysql 在这种类型的table才支持Transaction.

两种方法:
必须禁止JDBC的自动事务提交

1.java.sql.Connection Transaction
conn.setAutoCommit(false);//必须的
...
conn.commit();//提交
conn.rollback();//回滚
2.XA架构造的事物.

<%
...
conn.setAutoCommit(false);//必须的
Context initCtx = new InitialContext();
UserTransaction tx =null;
tx = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");

try
{
if(tx.getStatus() == javax.transaction.Status.STATUS_NO_TRANSACTION)tx.begin();
stmt.executeUpdate("insert into att_L_OTPolicy(factorycode,otdaytype) values('WWW','ttt')");
System.out.println(1/0);制造异常回滚.
tx.commit();
}catch(Exception e)
{
tx.rollback();
out.println("Error:"+e.getClass()+e.getMessage());
}
conn.close();
%>