请问三层的事务处理!
我刚学,没试过在三层里用事务,我按自己的理解说说,大家多教教我!
是不是这样用:
server端写个method比如:
AddNew(param:xxxx)
begin
sqlstr:='insert into xxxx value (param)'
adocnn.beginTrans
try
xxxx(执行sqlstr)
adocnn.commitTrans
except
adocnn.rollback
end;
end;
client端点击增加,调用AddNew?
大家看这样理解对不对!真的想学好三层,希望大家多多赐教!
能帮忙贴段代码学学么?:)
多个clientdataset连一个datasetprovider行不行啊?
ClientDataset.close后就把原来取到client的数据清空了么?
问题点数:0、回复次数:12Top
1 楼Erice(白雪公猪)回复于 2003-12-04 09:28:04 得分 0
事物处理一般放在服务器端上Top
2 楼aloelan(阿岚)回复于 2003-12-04 18:55:40 得分 0
晕!大哥,详细说说!Top
3 楼jingbianfc(『静⊙变』)回复于 2003-12-05 17:43:55 得分 0
我也在学,你所说的,都可以通过自己试验得知啊,为什么不自己写点代码试试呢Top
4 楼yexiong(英熊)回复于 2003-12-05 18:37:39 得分 0
MTS/COM+
好好学一下这方面的内容
Top
5 楼cocoboy79(ithink79.spaces.live.com)回复于 2003-12-09 22:16:52 得分 0
再次推荐李维那两本书。Top
6 楼wuzhongmin(吴仲敏)回复于 2003-12-10 10:14:01 得分 0
像aloelan 这样也可以呀。在中间层处理嘛!Top
7 楼eastliangliang(青苹果:拒绝羊皮的狼)回复于 2003-12-10 14:27:23 得分 0
你的事务处理是ADO的事务处理,如果你的程序跑在MTS/COM+环境下,推荐使用MTS/COM+的事务处理,在组件服务中设置组件的事务为需要事务或需要新事务,在组件激活的时候,事务即开始
try
xxxx(执行sqlstr)
adocnn.commitTrans 这里改为 SetComplete
except
adocnn.rollback 这里改为 SetAbort
end;
Top
8 楼WGYKING(修罗是谁?![就缺孩子了……])回复于 2003-12-10 14:29:56 得分 0
你写的没错
但事务处理推荐COM+Top
9 楼eastliangliang(青苹果:拒绝羊皮的狼)回复于 2003-12-10 18:12:27 得分 0
楼主这样做是可以的,可是业务逻辑复杂一点的话,一个事务中可能包含数个模块的操作,并不是执行一个SQL语句可以搞定的,MTS/COM+环境可以传递事务,采用一种投票制,只有所有模块都投提交票时,事务才提交,详细的看看李维的书吧,我也记不太清了。Top
10 楼qiume(好好回贴,天天胖胖)回复于 2003-12-11 09:36:39 得分 0
没错Top
11 楼wangxj333(天天真人)回复于 2003-12-11 16:06:00 得分 0
使用Midas服务器,就只能这样处理事务了.Top
12 楼wangl()回复于 2003-12-11 16:58:30 得分 0
尽量使用MTS/COM+的事务处理功能,在你的组件中这样写:
try
//你的业务代码
SetComplete; //相当于Commit
except
SetAbort; //相当于RollBack
end;
另外,需要将你的组件的事务模式设置为需要事务或需要新事务(一般设置为需要事务即可)
Top




