为什么rollback回滚失败

qq_35659985 2017-03-24 09:40:53
public void account(String fname,String tname, String m) throws Exception {
// TODO Auto-generated method stub
AccountDao dao = new AccountDao();
Connection conn=null;
try {
//0获取事物
conn = JdbcUtils.getConnection();
conn.setAutoCommit(false);

//1.转出
dao.accountOut_(conn,fname,m);

int i = 1/0;

//2.转入
dao.accountIn_(conn,tname,m);

//3.事物提交
conn.commit();
//释放资源
JdbcUtils.closeConn(conn);
} catch (Exception e) {
e.printStackTrace();
//事物回滚
conn.rollback();
//释放资源
JdbcUtils.closeConn(conn);
throw e;
}



}

}

转出操作下加了int=1/0;
执行后查询数据库 转出操作仍然执行了 转入操作没有执行
但是错误后不是catch后回滚么 为什么我的回滚失效了。。。。
...全文
606 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35659985 2017-03-24
  • 打赏
  • 举报
回复
引用 6 楼 pany1209 的回复:
[quote=引用 5 楼 qq_35659985 的回复:] [quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 qq_35659985 的回复:] [quote=引用 1 楼 pany1209 的回复:] AccountDao贴出来看看。。。。
Dao的话也有关系吗 =-=不是直接转出后发生错误 回滚了么。。。[/quote] 你在DAO里面干嘛要重新获得连接?要用传进来的连接才是正确的[/quote] 啊 那个忘注释了 注释了后还是回滚不了。。。。[/quote] 我帮你使了一个可以回滚啊,重新得到连接就不能回滚[/quote] =-=是你说的问题 看久了一直看错行 我的天 万分感谢
李德胜1995 2017-03-24
  • 打赏
  • 举报
回复
引用 5 楼 qq_35659985 的回复:
[quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 qq_35659985 的回复:] [quote=引用 1 楼 pany1209 的回复:] AccountDao贴出来看看。。。。
Dao的话也有关系吗 =-=不是直接转出后发生错误 回滚了么。。。[/quote] 你在DAO里面干嘛要重新获得连接?要用传进来的连接才是正确的[/quote] 啊 那个忘注释了 注释了后还是回滚不了。。。。[/quote] 我帮你使了一个可以回滚啊,重新得到连接就不能回滚
qq_35659985 2017-03-24
  • 打赏
  • 举报
回复
引用 4 楼 pany1209 的回复:
[quote=引用 3 楼 qq_35659985 的回复:] [quote=引用 1 楼 pany1209 的回复:] AccountDao贴出来看看。。。。
Dao的话也有关系吗 =-=不是直接转出后发生错误 回滚了么。。。[/quote] 你在DAO里面干嘛要重新获得连接?要用传进来的连接才是正确的[/quote] 啊 那个忘注释了 注释了后还是回滚不了。。。。
李德胜1995 2017-03-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_35659985 的回复:
[quote=引用 1 楼 pany1209 的回复:] AccountDao贴出来看看。。。。
Dao的话也有关系吗 =-=不是直接转出后发生错误 回滚了么。。。[/quote] 你在DAO里面干嘛要重新获得连接?要用传进来的连接才是正确的
qq_35659985 2017-03-24
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
AccountDao贴出来看看。。。。
Dao的话也有关系吗 =-=不是直接转出后发生错误 回滚了么。。。
qq_35659985 2017-03-24
  • 打赏
  • 举报
回复
public class AccountDao { /** * 转出 * @param fname * @param m * @throws SQLException */ public void accountOut_(Connection conn,String fname, String m) throws SQLException { //Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { //获取连接 conn = JdbcUtils.getConnection(); //编写sql String sql = "update account set money = money - ? where name = ?"; //创建语句执行者 st = conn.prepareStatement(sql); //设置参数 st.setString(1, m); st.setString(2, fname); //执行sql int i =st.executeUpdate(); //处理 System.out.println("出:"+i); } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ //JdbcUtils.closeResource(conn, st, rs); JdbcUtils.closeStatement(st); } } /** * 转入 * @param tname * @param m * @throws SQLException */ public void accountIn_(Connection conn,String tname, String m) throws SQLException { //Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { //获取连接 //conn = JdbcUtils.getConnection(); //编写sql String sql = "update account set money = money + ? where name = ?"; //创建语句执行者 st = conn.prepareStatement(sql); //设置参数 st.setString(1, m); st.setString(2, tname); //执行sql int i =st.executeUpdate(); //处理 System.out.println("收:"+i); } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ //JdbcUtils.closeResource(conn, st, rs); JdbcUtils.closeStatement(st); } } }
李德胜1995 2017-03-24
  • 打赏
  • 举报
回复
AccountDao贴出来看看。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧