这个我是这样理解的,你把setAutoCommit(flase)后,就等于不自动存盘(提交)了。所以你做的非法操作是没有提交的,就是没去数据库。除非你用commit()提交。rollback()是恢复到上一次commit()的状态。有点象你改了一个文件,没存盘,rollback呢就象你关闭这个文件,程序问你要存盘吗?你不要。而没有rollback呢等于强行关机。这个对于你的效果可能是一样的,但实际上的机制是不一样的。
你可以这么想一下,如果很多客户端都访问同一内存区的结果集。因为你没有rollback,别人可能访问到破坏了原子性的数据。
你可以这么想一下,如果很多客户端都访问同一内存区的结果集。因为你没有rollback,别人可能访问到破坏了原子性的数据。
但是rollback()不能省略,否则数据库以为你还没有结束
会一直等待你提交或者滚回,浪费资源,如果有超时机制的
过一定时间会取消,否则一直在