MtsDataModule中用ADO连接远程SQL数据库,将MtsDataModule的事务模型设成需要事务。
然后输出一个方法供前端调用,该方法用adoquery执行两条更新数据的sql语句,其中
第一条可以正确执行,第二条无法正确执行(如插入了重复主键)。前端以dcomconnection
调用该方法结果报错 “不能在指定的事务处理器中获得新事务”。如果sql数据库和应用层在同一台电脑上的话就可以正确执行。如果将MtsDataModule的事务
模型改成支持的话,无论在远程还是本地sql数据库均无法回滚第一条语句。
由于实际业务处理中需要多个MtsDataModule,因此不能用adoconnection的进行事务处理。
各位专家看看是何问题。procedure Ttdmtest.insertuser;
begin
try
with adoquery1 do
begin
sql.Clear;
sql.Add('insert into _sysuser (usercode) values (''testttt'')');
execsql;
close;
sql.Clear;
sql.Add('insert into _sysuser (usercode) values (''testttt'')');
execsql;
close;
end;
setcomplete;
except
setabort;
raise;
end;
end;
然后输出一个方法供前端调用,该方法用adoquery执行两条更新数据的sql语句,其中
第一条可以正确执行,第二条无法正确执行(如插入了重复主键)。前端以dcomconnection
调用该方法结果报错 “不能在指定的事务处理器中获得新事务”。如果sql数据库和应用层在同一台电脑上的话就可以正确执行。如果将MtsDataModule的事务
模型改成支持的话,无论在远程还是本地sql数据库均无法回滚第一条语句。
由于实际业务处理中需要多个MtsDataModule,因此不能用adoconnection的进行事务处理。
各位专家看看是何问题。procedure Ttdmtest.insertuser;
begin
try
with adoquery1 do
begin
sql.Clear;
sql.Add('insert into _sysuser (usercode) values (''testttt'')');
execsql;
close;
sql.Clear;
sql.Add('insert into _sysuser (usercode) values (''testttt'')');
execsql;
close;
end;
setcomplete;
except
setabort;
raise;
end;
end;
解决方案 »
- 请教EDIT比较问题 在线等!!!!!!!!!急等
- 求助!delphi6 调用WEBSERVICE中文产生乱码的问题?
- 虚拟网络打印机(答者有分,好方案送300----分次)
- 大虾,帮忙看看这个问题吧
- 问一下大家,用什么方法可以让程序在运行期间处于不可操作状态!
- 问一个简单的问题:抽象类能创建实例吗?
- 请斑竹原谅我在此发这样的贴子
- 今天好累啊.发分给大家啊.
- 请教一个SQL的UPDATE语句的问题。。。
- 如何通过网络传送一个string类的数组
- 各位高手,请问为何我的程序(Delphi编写)一运行,就立马弹出Delphi下的CPU调试器,里面全是汇编语言?
- 我没有分了,但遇到了问题,请各位高抬贵手!
错误信息应该为
新事务不能登记到指定的事务处理器中。
如果我访问安装在Unix操作系统上的Oracle数据库,岂不是不能使用分布事务了!