关于事务控制的问题!
思路:
在一段程序里要用两个存储过程去写数据库,但是必须做到“要么都成功,提交; 要么失败,都会滚”。
程序:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=workflowdb","sa","");
PreparedStatement cs=null;
//删除原来的信息
cs = con.prepareStatement("{call dt_deleteworkflow_u(?)}");
cs.setString(1,processid);
con.setAutoCommit(false); //在这里设置人工控制事务
try{
cs.executeUpdate();
}
catch(SQLException sqle){
con.rollback();
con.setAutoCommit(true);
return;
}
//写流程信息
cs = con.prepareStatement("{call dt_insertprocess_u(?,?)}"); //出错的地方!!!
cs.setString(1,processid);
cs.setString(2,graphtestAPP.GetInstance().GetWorkflowSeri().GetProcessSeri().GetProcessName());
try{
cs.executeUpdate();
}
catch(SQLException sqle){
con.rollback();
con.setAutoCommit(true);
return;
}
con.commit();
con.setAutoCommit(true);
错误内容:不能给一个人工型事务的连接创建多个PreparedStatement 。
//如果我将让事务自动提交或会滚的话,程序就可以。但是我必须人工的控制事务。请问各位达人我该如何作呢???谢谢!!