MTS的事务功能有问题??急请各位大虾帮帮忙.(200分)

  • 主题发起人 kingspeed
  • 开始时间
K

kingspeed

Unregistered / Unconfirmed
GUEST, unregistred user!
MTS的事物功能好象非常有问题:
我在客户端用的ITransactionContentEx来控制事务,
可是根本就不能回滚.
另外,在服务器方的程序setcomplete和setabort也
不起作用.
是什么原因,请各位大虾帮帮我!!
用的win2000,oracle8.0.4,delphi4.在NT下也试过,
同样不行.
 
因为不知道你的代码是怎么写的,所以很难回答。下面是我的中间层服务器的一段代码,你可以看看你是不是这么写的。
function Tappsvr.RunSql(const sSql: WideString): Integer;
begin
try
ADOQuery1.Close;
ADOQuery1.SQL.Text := sSql;
ADOQuery1.ExecSQL;
Result := 0;
SetComplete;
except
Result := -1;
SetAbort;
end;
end;
 
adminis:为什么用ADOQUERY不用query??
再问: 你在客户端的sql语句生成是怎么做的??
 
用ADOQuery是因为它效率比较高,速度快嘛!而且不用BDE比较省事。
客户端的SQL语句生成?我不是很明白。你想执行什么语句就用什么语句,
没有什么要生成的啊!
例如在客户端:
DCOMConnection1.AppServer.RunSql('delete from table1');
就可以了!
 
adminis:
其实我想问你的是在客户端对数据操作是用SQL语句上传到app提交数据库好呢?
还是用通常的数据控件修改后通过Clientsetdate.applydatas更新数据库好?
 
当然是用SQL语句好!你比较一下就知道了,简单地传一个SQL语句当然划得来。
多层结构就是尽量把工作放到中间层去做,减少网络通讯和客户端的工作。
甚至可以把很多常用的动作写成过程放到服务器端,客户端只传一个命令过去,
所有操作全部在服务器端完成。
 
adminis:

如果都写成sql语句要是对程序进行扩展或修改或是对库对行调整不是太麻烦了吗?
 
如果要对程序功能进行扩展当然要改程序了。除了这样也没有别的好方法。
当然你要做出权衡,就是你要做的程序是要求运行时效率最高,还是开发时
进展最快?如果想做出一个运行效率高,速度快的程序,还是要多考虑优化
程序的结构与代码,不然三层结构也不用学了,直接用C/S结构还更快。
 
To kingspeed:
我现在也在做MTS,用DELPHI4,Oracle8.0.4,Windows2000,也无法解事务问题,先是用
Dephi做服务端事务不能解决,后与微软公司联系,他们建议用Vb,后来我又用VB进行开发
但事务仍然不行,事务用法与你相同,又咨询微软,他们说数据库用SQLSERVER,然后成功了,
但我们是用ORACLE,后来我们到网上当了一些有关资料,上面有关于ORACLE的MTS配置问题,
但我们配了以后还是不行,资料上说Oracle7.3.4以下版本可以,Oracle8.0以上就不行.
但我们换版本还是不行,我认为这是Oracle的问题
 
哇,我正想改用MTS,听各位大侠一说,我一身冷汗。mts真的这么糟吗?
 
在Mts可以用TMtsDataModule.SetComplete/abort
当然也可用Sql
 
接受答案了.
 
顶部