三层应用中多表插入记录的事务如何处理(100分)

  • 主题发起人 主题发起人 sxdthonda
  • 开始时间 开始时间
S

sxdthonda

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,小弟初学MIDAS,现在程序初步设计是这样的,在服务器上安装Db2数据库,并在服务器端安装应用服务程序(使用Sqlconnection1+sqldataset(多个)+DataSetProvider(多个)),在客户端使用(SocketConnection+ClientDataSet(多个))。
在程序中需要同时将三个表中的部分数据导入另外三个表中(这个操作要求放入事务中,即要么都成功,要么都不成功)
导入数据语句为:
insert into c_repair select * from repair where no=curno;
insert into c_customer select * from customer where no=curno;
insert into c_work select * from work where no=curno;
请问事务要进行如何处理???
 
试试把语句提交给应用服务程序去处理.
 
关键是不知道如何在服务器中处理呀?还有,主-从表,在应用服务器上如何使用两个sqldataset实现,然后再传回到客户端呀?
 
主从表在中间层你按C/S两层那样实现就可以了,一个主DataSet一个从DataSet加一个DataSource,再用一个DataSetProvider连主DataSet,而客户端也是用一个ClientDataSet连那个中间层的DataSetProvider,把里面的字段都取出来,再用一个从DataSetProvider,把从DataSetProvider的DataSetField关联到主DataSetProvider上。这样主种表就实现了。
还有事务也不用你控制了,都已经是主-从机制也就可以自己控制了。
直接post主数据集和从数据集,再ApplyUpdate就可以了。
 
建一存储过程,把所有语句作为参数,,在存储过程里控制事务
我们的系统就是这么做的
 
多谢大家的参与。
问题没有解决。等待中...............
 
希望高手帮助一下。
 
我建议client端使用DCOMConnection1,比较稳定,对多表操作都放在中间层进行,所有的操作都通过中间层的类中的方法和函数进行操作。
 
to xiaokun:
client端使用DCOMConnection1,比较稳定,有何依据?是李维的书吗?
 
lngdtommy说的对,只要一个DataSetProvider和ClientDataSet就可以了,通过ClientDataSet发送SQL语句就是了,前提是DataSetProvider的poCommandText为true
 
关键我在客户端都是用Sql操作的呀?而且这些Sql好多都是多条要并在一个事务内部执行,这样就必须手工进行事务处理。
 
用储存过程也可以,不过有点繁锁,对主从表上面的方法可以,
其实也可在中间层处理,TDataSetProvide的BeforeUpdateRecord中处理
多表的更新
 
后退
顶部