「java事物案例」java事件处理怎么做

博主:adminadmin 2023-03-18 16:57:06 440

今天给各位分享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事件处理怎么做的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。