起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 195|回复: 6

关于事务

[复制链接]
发表于 2009-12-28 18:11:59 | 显示全部楼层 |阅读模式
请问我的代码在对某个数据集操作时,在事务中一次提交了很多数据,等待后代码抛出异常,我在错误处理中回滚事务,但结果是所有的操作都保存上了,我不明白的是为何会事务提交出错,为什么事务出错后结果却都保存上了,又为什么事务回滚也不起作用呢
回复

使用道具 举报

发表于 2009-12-28 18:15:07 | 显示全部楼层
请把你的代码贴出来看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-29 10:30:08 | 显示全部楼层
lTransHandle:=MoldSaveDS.Connection.Transaction.Start(false);
        try
            MoldSaveDS.ApplyUpdates;
            PlanSaveDS.ApplyUpdates;
            MoldSaveDS.Connection.Transaction.Commit(lTransHandle);
            DisplayDataSet.MergeChangeLog;
        except
            MoldSaveDS.Connection.Transaction.Rollback(lTransHandle);
            Result:=false;
        end;
回复 支持 反对

使用道具 举报

发表于 2009-12-29 10:37:41 | 显示全部楼层
MoldSaveDS 和  PlanSaveDS 是在一个信息下的数据集,还是两个信息下的数据集,事务这部分帖子比较多的,可以用“lTransHandle"在bbs上搜索,
http://bbs.justep.com/forum.php?mod=viewthread&tid=3449

http://bbs.justep.com/forum.php?mod=viewthread&tid=3450
这两个是处理同一个信息和不同信息下的数据提交,供参考
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-29 10:43:20 | 显示全部楼层
同一信息,我把事物去掉了,PlanSaveDS 单独提交,如果提交更改的行比较多,也会抛出异常
也就是说异常的原因不在事物,而是数据集的大数据的提交。但为何抛出异常后,数据依然保存到数据库了,而加上事物后并没有回滚,单步跟踪时确实执行了rollback。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-29 13:55:04 | 显示全部楼层
?????
回复 支持 反对

使用道具 举报

发表于 2009-12-29 15:11:19 | 显示全部楼层
不应该的,
1、说的“提交更改的行比较多”究竟几行呢?
2、“会抛出异常”,请把原始的错误信息贴出来
3、提供一下你的版本号吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 01:40 , Processed in 0.039865 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表