jdbc事物问题

try{
boolean bool = stmt.execute(sql);
conn.commit();
}catch(Exception e){
conn.rollback();
}finally{
conn.close();
}
这段代码中的execute放在try外和try内有什么区别?

[color=indigo]放在外面当发生异常的时候不会回滚!
try catch的用意 就是在try块发生异常 会执行catch里的东西 你的回滚在catch里,所以execute应该放到try里
[/color]

放在外面需要catch SQLExceotion

[color=blue]
try外:执行语句时,发生异常,不会被你写的catch捕获。自然不会回滚了。

try内:执行语句时,发生异常,如果异常匹配你的catch中的异常,则被捕获,就会被回滚。

有可能发生异常的语句,一定要放在try语句块中。
[/color]

这个方法本身是会抛出异常的

boolean execute(String sql)
throws SQLException

当然要放在try语句块中,不然外层调用它的方法就得声明抛出这个异常

try外的话出了问题就不会调用 conn.rollback(); 也就没法会滚了 况且sql操作必须加异常处理 要么也有语法错误呀 呵呵