事务(Up有分)(100分)

  • 主题发起人 主题发起人 金少
  • 开始时间 开始时间

金少

Unregistered / Unconfirmed
GUEST, unregistred user!
三层怎样用事务来实现主从资料的一致性?
 
建立三個接口﹐以供客戶端調用
begin
Trans: ADOConnection1.begin
Trans;
CommitTrans: ADOConnection1.CommitTrans;
RollbackTrans: ADOConnection1.RollbackTrans
 
能给详细范例吗, Thanks!
horse0915@sina.com
 
利用SQL语句的事务洒
begin
Trans
CommitTrans
RollbackTrans
 
上面說的不是范例嗎﹖
建立了上面的接口,再在客戶端調用
try
SocketConnection1.Appserver.begin
Trans;
_Applyupdate();//詳細的保存過程
SocketConnection1.Appserver.CommitTrans;
except
SocketConnection1.Appserver.RollbackTrans;
end;

 
比如说我4个表同时更新! Client端又都用的是敏感控件如TDbedit, Tdbgrid
作, 能不能在中间层处理,
在Client处理难道不成我在Append前加SocketConnection1.Appserver.begin
Trans;
存盘时我又执行
SocketConnection1.Appserver.CommitTrans;
except
SocketConnection1.Appserver.RollbackTrans;
这样肯定多用户操作会有问题? 请高手指教!
 
对数据库有新增、删除、修改操作的
以接口调用,中间层应用事务如下:
//执行修改
Function FuncQueryExec(I_Sql :WideString;I_TransBz :boolean):boolean;
Function FuncQueryExec(I_Sql :WideString;I_TransBz :boolean):boolean;
var
V_Query :TADOQuery;
begin
Result :=false;
V_Query :=TADOQuery.Create(nil);
V_Query.Connection :=G_ADOCn;
if I_TransBz then
begin
PubProcStartNewTransaction(G_ADOCn);
V_Query.Close;
V_Query.SQL.Text :=I_Sql;
try
V_Query.ExecSQL;
except
//on G_ADOCn.Errorsdo
//on e:Errorsdo
begin
//异常处理
G_ADOCn.RollbackTrans;
ProcErrorHandle(G_ADOCn.Errors,false);
V_Query.Free;
exit;
end;
end;

try
G_ADOCn.CommitTrans;
except
begin
//异常处理
G_ADOCn.RollbackTrans;
ProcErrorHandle(G_ADOCn.Errors,false);
V_Query.Free;
exit;
end;
end;
end
else
begin
V_Query.Close;
V_Query.SQL.Text :=I_Sql;
try
V_Query.ExecSQL;
except
//on e:EADOErrordo
begin
//异常处理
ProcErrorHandle(G_ADOCn.Errors,false);
V_Query.Free;
exit;
end;
end;
end;
Result :=true;
end;
 
To zqs10597249,
但我Client端都用的是敏感控件, 我该如何实现呢?
 
你用什么连接方式
如果使用ADO,可以使用ADO的BatchUpdate模式,把客户端对于数据的所有修改都暂时
存储在客户端的缓存中.等决定提交时,一起提交.(这在李维的<Delphi高级程序设计篇>
中有详细的介绍).
建议你查查大富翁的全文检索,这样的帖子应该会有不少
 
子陵
你是谁,你的qq呢称也是吗?
 
BDE连接呀,
我要的是几个表同时更新, 以保持资料的完整性!
三层中你们是怎样实现的呢?
 
后退
顶部