日期:2014-05-20  浏览次数:20551 次

关于事务的几个问题 谢谢大家!!!!
用jdbc来做事务控制时:

1:select查询操作算不算一个事务?
2:conn.setAutoCommit(true);这步是不是一定要做?
3:rollBack()后,程序的流程?下一步会执行什么语句?

------解决方案--------------------
1.完整的事务过程应该是从开启事务到提交/回滚事务结束,楼主的意思是查询不会对数据库造成改动,所以想知道查询是否需要封装成事务是吧,我觉得是看情况选择
2.应该设置conn.setAutoCommit(false);否则仍为自动提交
3.rollback后数据库会去查操作记录,恢复事务中已修改的数据,并再次记录日志。

------解决方案--------------------
1.因为查询不会对数据库造成影响,所以不必封装到事务
2.在获取conn后设置conn.setAutoCommit(false)
执行完事务后conn.setAutoCommit(true)
3.这个问题没必要研究
------解决方案--------------------
一般开发中,只要用到数据库连接的,都用事务管理起来,
所有查询一般也用事务管理起来,当然它没有修改数据,说到底,事务是管理连接的。管理它管理下的连接的操作的,操作当然包括连接的所有操作。


------解决方案--------------------
实际情况实际操作
------解决方案--------------------
用jdbc来做事务控制时: 

1:select查询操作算不算一个事务? 
从数据库角度来看,select也算一个事务,但在实际编程中,是不会控制查询事务的
2:conn.setAutoCommit(true);这步是不是一定要做? 
conn.setAutoCommit(false); 在事务执行完后要提交才可以。注意不同数据库在使用conn.setAutoCommit(false)时要慎重,可能会有异常的效果。
3:rollBack()后,程序的流程?下一步会执行什么语句?
rollBack后当然是把事务回滚了,就相当于没有做过数据库更新,下一步该是报错处理了,呵呵
------解决方案--------------------
1、select操作只是简单的对数据库进行读操作,所以我觉得没有必要加事务。删除和更改才需要事务。

2、需要自己控制时才设置conn.setAutoCommit(false).一般的开发都是自己控制。

3、回滚后,你程序怎么写,该干吗干吗去……因为rollBack()一般出现在catch里,所以一般都是在rollBack()后再一次进行删除或更改操作.
------解决方案--------------------