求个事物回滚的方法或思路(不用spring和hibernate框架)

ld5203611 2012-04-23 10:31:32
如题:类似代码:
try{
Connection con=****;//数据库连接
dao.addEmployee(Employee,con);//添加员工,具体方法略
String a=null; a.trim();//手动写个异常
}catch(Exception e){
con.rollback();
}
我这样写事物没有回滚,,数据库里还是添加了数据,求个解决思路,当添加数据的方法后面有错时,让它事物回滚,

(换个例子:我用for循环添加记录,当执行到某次时报异常,则让事物回滚,清理前面添加的数据)
当然也希望赐教下各类不同的事物回滚,包括spring框架等
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
stomach 2012-04-24
  • 打赏
  • 举报
回复
要先把autoCommit设为false才算是自主事务管理啊,你这样写,每个add语句就是一个单独的事务,当然没有效果
zfz1214 2012-04-23
  • 打赏
  • 举报
回复
还是建议lz用spring吧
jackson_fighting 2012-04-23
  • 打赏
  • 举报
回复
con.setAutoCommit(false);

try{
con.commit()
}catch(Exception){
con.rollback();
}finnly{

}
cjoy4856 2012-04-23
  • 打赏
  • 举报
回复
LZ 其实spring和hibernate等框架就是对事物进行了良好的封装,更好的去处理了这些问题。但是他们的处理问题的主要来源还是在JDK上的。
我就说说我愚建吧。也是我对这些事物的理解吧。如果大家有很好的理解,其大家分享一下。
其实他们主要是在Connecion入手,在connection中有两方法为回滚void rollback()、rollback(Savepoint savepoint),一般我们都是用第一种,但是spring等框架肯定是用第二种,因为在第二种中会对保存的东西进行记录,到发生异常的时候,你可以指定回到那个保存点。
在Connection中有setSavepoint(),setSavepoint(String name)两方法,用来对保存点进行记录。它还提供了releaseSavepoint(Savepoint savepoint)移动保存点的位置。
将这些提供的方法或是对象进行操作而言。
如果有说错的,请包涵
ss36290109 2012-04-23
  • 打赏
  • 举报
回复
5楼正解,即时你批量插,错1个也能都回滚的
tyj06102000 2012-04-23
  • 打赏
  • 举报
回复
用spring事物控制就好了 ,lz为啥要自己写呢
zong_hai 2012-04-23
  • 打赏
  • 举报
回复
JDBC的conn的事物是自动提交的,它可以关闭它手动干
试试这个 有一个什么设置 记不太清楚了。
安特矮油 2012-04-23
  • 打赏
  • 举报
回复
先关闭自动提交
con.setAutoCommit(false);

然后再你需要提交的地方con.commit();
需要回滚的地方con.rollback();
ld5203611 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
设置手动提交
所有数据insert结束后commit
exception里回滚就可以了啊
[/Quote]
这个我试过没用
loveofmylife 2012-04-23
  • 打赏
  • 举报
回复
设置手动提交
所有数据insert结束后commit
exception里回滚就可以了啊
  • 打赏
  • 举报
回复
JDBC的conn的事物是自动提交的,它可以关闭它手动干

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧