public boolean addCategory(Category category) throws SQLException { // TODO Auto-generated method stub Connection conn = dbconn.getConnection(); categoryDaoImpl = new CategoryDaoImpl(conn); try { conn.setAutoCommit(false); if (categoryDaoImpl.addCategory(category)) { conn.commit(); return true; } } catch (SQLException e) { conn.rollback(); log.error("addCategory:" + e.getMessage()); } finally { conn.setAutoCommit(true); if (conn != null) { conn.close(); } } return false; }
上面是已小列子,主要用setAutoCommit()的方法;
现在分析下,都是在网上找的
1:
一般来讲,大家对数据库中的表单,主要是增、删、改、查 这四个操作,如果你的程序当中,遇到一次业务逻辑需要两次或两次以上的对相同数据表的增删改操作,那么,为了数据的一致性,(或者具体说,在你的一次业务逻辑的处理过程中,其他(线程或程序或业务处理)的对相同数据的相同两次查询所得结果相同。)我们会利用数据库的事务操作,将一次业务逻辑所包含的所有操作封装在一个事务里,一次将多个操作进行提交。
而conn的setAutoCommit方法,是指,在事务当中,是否执行一条语句就自动提交一次。
这样的话,如果,你想在一个事务里进行多个操作。就必然将setAutoCommit的参数设置成false,在多个操作的最后调用conn.commit()方法,进行手动提交。
2:查询就不用了,只有一句更新语句也不用。如果有一系列的更新,其中一个发生异常就要全部回滚的才需要。
时间: 2024-10-25 06:02:32