java jdbc中这个样一个方法事物回滚 后面的 catch finally 里的代码是什么意思 请详细解释一下谢谢

2024-12-19 19:25:46
推荐回答(4个)
回答1:

如果出现的异常的话。就是有的sql语句出错了。
程序不能继续往下执行。
这个时候如果链接数据库的链接还存在的话 。那么肯定要将以前执行的sql语句都让他不执行。
要不然执行了第一条语句。没有执行第二条语句。那不是有很大的漏洞嘛。
抛出e 。。。e就是异常信息。。当然。这里面的e你可以自己定义。但是就没有自带的异常信息清楚。
finally就是不管程序有没有异常跑出来 。都要执行的代码。
比如说关闭链接。不管你的sql有没有执行。数据库的链接是必须要关掉的。

conn.setAutoCommit(bb);//??什么意思
这句话肯定是设置一个布尔型的变量来看一看。sql语句是否执行完成。如果没有异常的话 。那么就记录成为true。。如果有异常的话。。那么就记录成false;

最后关闭链接。

回答2:

  1. bb=conn.getAutoCommit();//没有用??

    这边是为了获取数据库原始的事务机制,这个会在后边有用,因为你要实现事务管理要讲autocommit设置为false.但要想保持数据库原本的状态,在事务结束后,需要你手动是设置回去。后边第四条有用到。

  2. if(conn!=null)//连接不为空回滚是什么意思??

            conn.rollback();

        抛出异常后,事务要回滚,这边conn为空,后边会报空指针异常。


  3. throw e;//抛出e为什么??

    将异常抛给后边的程序处理。

  4. conn.setAutoCommit(bb);//??什么意思

    这边就是第一条所说的。要将事务机制设置回原来状态。

  5. ConnectionManager.closeConnection(conn);//???

    释放连接资源。

    

回答3:

你好:

catch(SQLException e){
//catch块中应该是捕获发生的异常,我感觉这句话应该为if( conn == null)
if(conn!=null)//连接不为空回滚是什么意思??
//事务回滚,事务不会提交,数据库不会发生改变
conn.rollback();
//e是你上面定义的SQLException异常,意思是只要你try块中出现的类似的SQL异常,比如SQL语法错误等都会被抛出给调用方。中断操作。

throw e;//抛出e为什么??
}
finally {
if(conn!=null){
//如果你创建了connection对象,即!=null,则系统会自动提交你关于数据库的操作,也就是你try块中对数据库的操作。
conn.setAutoCommit(bb);//??什么意思
}

希望可以帮到你!

回答4:

if(conn!=null)//操作失败后回滚数据库
conn.rollback();

throw e;//抛出异常
}

conn.setAutoCommit(bb);//设置是手动提交事物还是自动提交
ConnectionManager.closeConnection(conn);关闭改连接