如果出现的异常的话。就是有的sql语句出错了。
程序不能继续往下执行。
这个时候如果链接数据库的链接还存在的话 。那么肯定要将以前执行的sql语句都让他不执行。
要不然执行了第一条语句。没有执行第二条语句。那不是有很大的漏洞嘛。
抛出e 。。。e就是异常信息。。当然。这里面的e你可以自己定义。但是就没有自带的异常信息清楚。
finally就是不管程序有没有异常跑出来 。都要执行的代码。
比如说关闭链接。不管你的sql有没有执行。数据库的链接是必须要关掉的。
conn.setAutoCommit(bb);//??什么意思
这句话肯定是设置一个布尔型的变量来看一看。sql语句是否执行完成。如果没有异常的话 。那么就记录成为true。。如果有异常的话。。那么就记录成false;
最后关闭链接。
bb=conn.getAutoCommit();//没有用??
这边是为了获取数据库原始的事务机制,这个会在后边有用,因为你要实现事务管理要讲autocommit设置为false.但要想保持数据库原本的状态,在事务结束后,需要你手动是设置回去。后边第四条有用到。
if(conn!=null)//连接不为空回滚是什么意思??
conn.rollback();
抛出异常后,事务要回滚,这边conn为空,后边会报空指针异常。
throw e;//抛出e为什么??
将异常抛给后边的程序处理。
conn.setAutoCommit(bb);//??什么意思
这边就是第一条所说的。要将事务机制设置回原来状态。
ConnectionManager.closeConnection(conn);//???
释放连接资源。
你好:
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);//??什么意思
}
希望可以帮到你!
if(conn!=null)//操作失败后回滚数据库
conn.rollback();
throw e;//抛出异常
}
conn.setAutoCommit(bb);//设置是手动提交事物还是自动提交
ConnectionManager.closeConnection(conn);关闭改连接