「java事物案例」java事件处理怎么做
今天给各位分享java事物案例的知识,其中也会对java事件处理怎么做进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java事务处理
如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作.....
JavaBean中使用JDBC方式进行事务处理
public int delete(int sID) {
dbc = new DataBaseConnection();
Connection con = dbc.getConnection();
try {
con.setAutoCommit(false);// 更改JDBC事务的默认提交方式
dbc.executeUpdate("delete from xiao where ID=" + sID);
dbc.executeUpdate("delete from xiao_content where ID=" + sID);
dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);
con.commit();//提交JDBC事务
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式
dbc.close();
return 1;
}
catch (Exception exc) {
con.rollBack();//回滚JDBC事务
exc.printStackTrace();
dbc.close();
return -1;
}
}
在数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。
例如在银行的转帐事务中,假定张三从自己的帐号上把1000元转到李四的帐号上,相关的sql语句如下:
update account set monery=monery-1000 where name='zhangsan'
update account set monery=monery+1000 where name='lisi'
这个两条语句必须作为一个完成的事务来处理。只有当两条都成功执行了,才能提交这个事务。如果有一句失败,整个事务必须撤消。
在connection类中提供了3个控制事务的方法:
(1) setAutoCommit(Boolean autoCommit):设置是否自动提交事务;
(2) commit();提交事务;
(3) rollback();撤消事务;
在jdbc api中,默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用commit()来提交,否则将调用rollback()来撤消事务。
在jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。
JAVA JDBC事务提交的疑问。
启动事务 conn.setAutoCommit();
这个不是启动事务,而是设置事务是否自动提交,默认是自动提交,如果要手动控的话,写成conn.setAutoCommit(false);
if(rs.next){
...执行更新
conn.commit();
}
这个也不对,RS不可能执更新操作。只能是查询。
如果你进行了锁表操作,那么如果没有commit()或rollbak()方法,是不会进行解锁操作的。
下面给你些代码段以做参考。
public class SQLCondition{
public ResultSet execuQuery(Connection conn) throws SQLException{
检索操作.......
}
public int execuUpdate(Connection conn) throws SQLException{
更新操作.......
}
}
public class DBAccess(){
public void execute(){
SQLCondition condition = .....;
Connection conn = .....;
try{
conn.setAutoCommit(false); //设成非自动提交
condition.execuQuery(conn);
condition.execuUpdate(conn);
//如果操作成功会走到这一步,进行提交,可以解锁
conn.commit();
}catch(SQLException){
//出现任何的SQL异常都可以捕捉到,进行事务回滚,也可以解锁。
conn.rollbak();
}
}
}
自动默认是回滚事务?
默认的话,是执行一条就进行提交,如果错了会回滚。
java中的事务到底怎么理解举个实际的例子
比如说你去银行转账,将将 A 账户中的金额转到B账户。
A 语句:update Table set amount = amount - 100 where id = 'A'"
B语句:update Table set amount = amount + 100 where id = 'B'"
会有两条update语句,如果不用事务处理的话,在A语句执行完之后,在执行B语句的时候出错,那么A账户的金额减少了,B账户的金额却没有增加,这就有问题了
所以要用到事务来控制,如果B语句出现错误,就将事务回滚,A账户的金额也不会减少。
如果A。B都执行成功,事务提交
简单来说就是所有在事务中的语句必须全部执行成功,事务才会提交,如果有一条执行失败,事务就会回滚。
关于java事物案例和java事件处理怎么做的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。