以下代码并没有用到第三方的东西,完全是在java jdk的接口上写出来的,保证一系列sql语句在一个事务中执行,如果出现异常则回滚,简单吧,一些第三方东西支持的所谓事务也可能是这个道理,只是往往进行了封装。
public boolean execSqlList(List sqlList)
{
boolean bRes = true;
Connection conn = DbTool.getConn();
try {
//这一步很关键,需要把连接设为非自动提交状态
conn.setAutoCommit(false);
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
Statement stmt = conn.createStatement();
if(sqlList != null && sqlList.size()>0)
{
for(int i=0;i<sqlList.size();i++)
{
stmt.execute((String)sqlList.get(i));
}
conn.commit();
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
try {
//如果执行中出现异常则回滚,保证在一个事务中进行
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
bRes = false;
}
finally
{
try {
conn.close();
} catch (SQLException e1) {
e1.printStackTrace();
bRes = false;
}
}
return bRes;
}