jdbc mysql 回滚问题 mysqljdbc事务 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其中数据库为mysql 而且表类型是 InnoDB //4、执行表语句,生成表meterDao.executeSql(str.toString(),conn);我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, //4、执行表语句,生成表meterDao.executeSql(str.toString(),conn);我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, 前边插入数据还是插入了 你可以在这一行加个断点,然后看看这一行还没执行的时候,是不是之前的update都已经commit了。我感觉你的这些操作不在一个transaction里。 //2、生成数据库表 try { conn = jdbc.getConn(); //点禁止自动提交,设置回退 conn.setAutoCommit(false); //3、把表信息更新进入表(meter、meter_file)中 conn.createStatement().executeUpdate("insert into meter(id) values('name')"); conn.createStatement().executeUpdate("insert into meter2(id) values('name')"); meterDao.executeSql(str.toString(),conn); //事务提交 conn.commit(); } catch (SQLException e) { e.printStackTrace(); try { //操作不成功则回退 conn.rollback(); System.out.println("回滚成功"); } catch (SQLException e1) { e1.printStackTrace(); } } 后来我测试了下,就是执行这两条语句,后边条报错,结果还是不能回滚,第一个插入的数据还是插入了数据库 //4、执行表语句,生成表meterDao.executeSql(str.toString(),conn);我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, 前边插入数据还是插入了------------------------------------------------------------------------------------------------------------------------------------------------------------------COMMIT和ROLLBACK语句只应用于DML(select,update、insert、delete),建表语句是DDl。 怎样得到Jtable中的最后一行的数据 急:如何查处cpu使用率高的sql语句? 最近搞一个项目,遇到点麻烦,请大家不吝赐教小弟 hibernate的核心是什么,是表的映射吗 struts2中如何利用原来写好的css? 如何用struts标签表示或的关系 HttpURLConnection setReadTimeout 怎么开发网络蜘蛛,提供点资料吧。谢谢!!! java现在比较常用的编辑器有哪些。 如何用java生成一个可用的.ts文件 [求助]后台查询出来的数据,再前台做了下拉列表的问题 struts2 实现删除跳转时传参出现问题,求助呀~~~~
meterDao.executeSql(str.toString(),conn);
我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作,
meterDao.executeSql(str.toString(),conn);
我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, 前边插入数据还是插入了
我感觉你的这些操作不在一个transaction里。
try {
conn = jdbc.getConn();
//点禁止自动提交,设置回退
conn.setAutoCommit(false);
//3、把表信息更新进入表(meter、meter_file)中
conn.createStatement().executeUpdate("insert into meter(id) values('name')");
conn.createStatement().executeUpdate("insert into meter2(id) values('name')");
meterDao.executeSql(str.toString(),conn);
//事务提交
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
//操作不成功则回退
conn.rollback();
System.out.println("回滚成功");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
后来我测试了下,就是执行这两条语句,后边条报错,结果还是不能回滚,第一个插入的数据还是插入了数据库
meterDao.executeSql(str.toString(),conn);
我在这里故意写入了一个有错的创建表语句,这里报错,并且打印了“回滚成功”,但是没有执行回滚操作, 前边插入数据还是插入了
------------------------------------------------------------------------------------------------------------------------------------------------------------------
COMMIT和ROLLBACK语句只应用于DML(select,update、insert、delete),建表语句是DDl。