public boolean deleteSchedule(int number, String courseNum) throws SQLException {
// TODO Auto-generated method stub
boolean flag =false;
String sql1 = "delete from SC WHERE CNumber=? and CourseNum=?";
String sql2 ="delete from Schedule WHERE CNumber=? and CourseNum=?";
try {
DataBaseConnection dbc = new DataBaseConnection();
con = dbc.getConnection();
//preStm=con.prepareStatement(sql1).addBatch(sql2);
con.setAutoCommit(false);// 更改JDBC事务的默认提交方式
preStm=con.prepareStatement(sql1);
preStm.setInt(1, number);
preStm.setString(2, courseNum);
preStm.execute();
preStm=con.prepareStatement(sql2);
preStm.setInt(1, number);
preStm.setString(2, courseNum);
preStm.execute();
con.commit();//提交JDBC事务
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式
flag =true;
} catch (SQLException e) {
con.rollback();//回滚JDBC事务
try {
DAOFactory.getCheckStringImpl().CheckString("ManageScheduleImpl.java", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("ddddddddddd"+e);
flag=false;
}finally{
this.close();
}
return flag;
}
@Override
public boolean insertSchedule(ScheduleVo course) {
// TODO Auto-generated method stub
return false;
}
出现
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.解决办法
错误情况:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
错误原因:
1. 当你在一个SQL SERVER的JDBC连接上执行多个STATEMENTS的操作。
2. 手动事务状态(AutoCommit=false),并且使用 direct (SelectMethod=direct) 模式。
解决方法:
1. 确保在你的连接上只有一个STATEMENT操作。
2. 使用手动事务模式时,必须在连接字符串中加上SelectMethod=Cursor。例如:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=RMS_Pro;SelectMethod=Cursor;User=sa;Password= ");
java 事物处理
最新推荐文章于 2024-10-20 17:07:48 发布