请问在midas中如何运用事务处理保证数据的完整性?(50分)

  • 主题发起人 主题发起人 asiancat
  • 开始时间 开始时间
A

asiancat

Unregistered / Unconfirmed
GUEST, unregistred user!
另外client和server通过internet传输数据的时候,如果数据量大的话,会有一段时间数据在接受但是程序不响应,表现为程序忙?
如何避免呢?
 
严重关注!严重关注!严重关注!
 
1、运行事务
在Midas中在客户端使用TDataSetProvider的OnUpdateError,在客户程序端使用OnReconCileError就满足要求了。
DEVExpress的:
procedure TForm1.Button1Click(Sender: TObject);
var
TranDesc: TTransactionDesc;
begin
if not self.SQLConnection1.InTransaction then
begin
TranDesc.TransactionID := 1;
TranDesc.IsolationLevel := xilReadCommitted;
self.SQLConnection1.StartTransaction(TranDesc);
try
if SimpleDataSet1.ChangeCount > 0 then
SimpleDataSet1.ApplyUpdates(0);
if SimpleDataSet2.ChangeCount > 0 then
SimpleDataSet2.ApplyUpdates(0);
SQLConnection1.Commit(TranDesc);
except
on e:exceptiondo
SQLConnection1.Rollback(TranDesc);
end;
ShowChangeCount;
end;
end;
ADO:
ADOConnection1.begin
Trans
try
数据提交处理。。。
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
传输数据:
1、
你可以采取分段的方式设置TClientDataSet组件的PacketRecords为10或其它数据。
2、如果是有条件的处理可以使用TClientDataSet组件的CommandText语句
3、或使用TClientDataSet组件的DataRequest方法。

 
TO 陈健松:
请问一下老兄,要是用事务怎么写呀???请指点一下,解决了,老弟开贴出分!!!
 
上上楼的说得很明白了
你要使用ado的话,在adoconnection中可以开始事务
就如楼上所说
不知你大数据量的数据传输是因为查询呢还是更新操作
是查询的话,吧PacketRecords的-1改为一个值,你希望客户端一次从server下载的数据笔数。
更新的话,可以处理delta数据封包,但一般更新的数据传送量是很少的
 
看能否让后台线程负责数据更新
 
TO“陈健松”:
请问,用ADO时,我在客户端应该怎样提交两个具有主从关系的感应空件?你的如下方法接受什么参数?我应该怎样使用?如果解决,兄弟当大份相送。谢谢!
ADO:
ADOConnection1.begin
Trans
try
数据提交处理。。。
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
 
接受答案了.
 
后退
顶部