鱼C论坛

 找回密码
 立即注册
查看: 3043|回复: 3

java事务基础的问题

[复制链接]
发表于 2012-8-14 22:32:32 | 显示全部楼层 |阅读模式
1鱼币
我都找不到相应的版块提问。。。。。


import java.sql.*;
public class TestTransaction {
/**
  * @param args
  */
public static void main(String[] args) {
  Connection conn = null;
  Statement stmt = null;
  PreparedStatement pstmt = null;
  try {
   Class.forName("org.gjt.mm.mysql.Driver");
   conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_1","root","123456");
   
   conn.setAutoCommit(false); //设置是否自动提交——否
   stmt = conn.createStatement();
   stmt.addBatch("insert into dt values(4,'qq','N','12')");
   stmt.addBatch("insert into dt values(5,'qq','N','132')");  
   //如果这个地方报SQLException ,也就是说下面的conn.commit();  没有执行那回滚操作是否是多余的呢
   stmt.addBatch("insert into dt values(6,'QQ','N','14')");
   stmt.executeBatch();
   conn.commit();  
   conn.setAutoCommit(true);   
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e){
   try {
    conn.rollback();            //这个地方的回滚操作是不是多余的啊
    conn.setAutoCommit(true);
   } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }  
   e.printStackTrace();   
  } finally {   
   try {
    if(stmt != null)stmt.close();
    if(pstmt != null)pstmt.close();
    if(conn != null)conn.close();
   } catch (SQLException e) {  
    e.printStackTrace();
   }
  }
  
}
}

最佳答案

查看完整内容

问题1://如果这个地方报SQLException ,也就是说下面的conn.commit(); 没有执行那回滚操作是否是多余的呢 如果有SQLException 的话,提交确实是多余的,程序会进入catch (SQLException e){ 进行回滚,但那个conn.commit(); 你不能不写啊,你还要考虑程序正常执行的情况, 问题2: 同样,第二个地方的那个回滚不是多余的,那就是问题1中说的,如果程序出现SQL异常,才会进入异常捕获,去执行那个回滚,如果没有SQ ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-14 22:32:33 | 显示全部楼层
问题1://如果这个地方报SQLException ,也就是说下面的conn.commit();  没有执行那回滚操作是否是多余的呢
       如果有SQLException 的话,提交确实是多余的,程序会进入catch (SQLException e){  进行回滚,但那个conn.commit(); 你不能不写啊,你还要考虑程序正常执行的情况,
    问题2:   同样,第二个地方的那个回滚不是多余的,那就是问题1中说的,如果程序出现SQL异常,才会进入异常捕获,去执行那个回滚,如果没有SQL异常,就正常提交。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-15 19:27:20 | 显示全部楼层
求大神给我一个解释啊:Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2012-8-20 17:32:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表