当前位置: 代码迷 >> J2EE >> jdbc mysql 回滚有关问题
  详细解决方案

jdbc mysql 回滚有关问题

热度:47   发布时间:2016-04-17 23:40:01.0
jdbc mysql 回滚问题
try {
conn = jdbc.getConn();
//点禁止自动提交,设置回退  
conn.setAutoCommit(false);
//3、把表信息更新进入表(meter、meter_file)中
String metername = meter.getMeterName();
meterDao.saveMeter(meter,conn);
if(!(filelist==null||filelist.size()<1)){
Long meterid = meterDao.queryMeterId(metername,conn);
meter.setId(meterid);
meterDao.saveMeters(meter, filelist,conn);
}
//4、执行表语句,生成表
meterDao.executeSql(str.toString(),conn);

//事务提交  
conn.commit();   
} catch (SQLException e) {
e.printStackTrace();
try {
//操作不成功则回退  
conn.rollback();
System.out.println("回滚成功");
} catch (SQLException e1) {
e1.printStackTrace();
}   
}   


为什么我在其中报错之后没有回滚呢?
------解决思路----------------------
引用:
Quote: 引用:

有输出么,哪出错了?

//4、执行表语句,生成表
meterDao.executeSql(str.toString(),conn);
我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, 前边插入数据还是插入了

------------------------------------------------------------------------------------------------------------------------------------------------------------------
COMMIT和ROLLBACK语句只应用于DML(select,update、insert、delete),建表语句是DDl。
  相关解决方案