java 事物处理


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= ");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值