在数据操纵组件中提供了一个更新数据的方法,此方法要返回代表其执行结果的一个整数,如果成功则返回0,否则返回预定的错误编码。本人在另一个中间层组件(业务逻辑)中调用此方法,当出现错误(如主键重复)时却不能返回其错误码,不知是为何?示意代码如下:
数据组件提供的更新方法:
function ExecuteCommand(sSQL:string):Integer;
begin
try
ado_test.sql.add(sSQL);
Result:=ado_test.execSQL;//执行成功则返回受影响的行
except //但当错误发生时不能 执行下面部分
on e:Exception do
Case 数据库返回的错误码 of
000XXX:Result:=123;//根据数据库返回的错误码解释成预定的错误码
111XXX:Result:=321;
else: Result:=999;
end;
end;
end;其它业务层组件:function AddOperator(UserInfo:Variant):Integer;
var
I:IRDM;
begin
try
I:=CoPooler.Create;
Result:=I.ExecuteCommand(UserInfo);
except
//不能创建对象或其它处理
end;
end;当在客户端调用 AddOperator发生错误时却时反回了“灾难性故障”的提示!,各位老兄,如何才能正确处理中间层的错误呢?并返回指定的错误码?
数据组件提供的更新方法:
function ExecuteCommand(sSQL:string):Integer;
begin
try
ado_test.sql.add(sSQL);
Result:=ado_test.execSQL;//执行成功则返回受影响的行
except //但当错误发生时不能 执行下面部分
on e:Exception do
Case 数据库返回的错误码 of
000XXX:Result:=123;//根据数据库返回的错误码解释成预定的错误码
111XXX:Result:=321;
else: Result:=999;
end;
end;
end;其它业务层组件:function AddOperator(UserInfo:Variant):Integer;
var
I:IRDM;
begin
try
I:=CoPooler.Create;
Result:=I.ExecuteCommand(UserInfo);
except
//不能创建对象或其它处理
end;
end;当在客户端调用 AddOperator发生错误时却时反回了“灾难性故障”的提示!,各位老兄,如何才能正确处理中间层的错误呢?并返回指定的错误码?
MTS/COM+是执行在MTS/COM+的执行环境中,因此Delphi 的程序员无法像Delphi的分
布式多层应用系统一样可以直接在Delphi 的IDE 中设定应用程序服务器的断点来调
试。
事实上, Delphi 仍然可以在Delphi 的集成开发环境中调试MTS/COM+组件,也
可以让程序员在集成开发环境中在MTS/COM+组件的程序单元中设定断点,然后执行客
户端应用程序调用MTS/COM+组件。此时Delphi 便会把执行控制权带到Delphi 的集
成开发环境中,并且暂停在程序员设定的断点上让程序员开始调试。从此开始,程序员
就可以像调试一般的应用程序一样来调试MTS/COM+组件了。不过要如此调试MTS/COM+
组件,程序员必须先做一些设定。
不管是对MTS或COM+,Delphi 5 都能够让程序员调试MTS/COM+组件。以下分别说
明如何在MTS或COM+中调试MTS/COM+组件:
如何调试MTS 组件:在Delphi 的集成开发环境中激活要被调试的MTS 组件项目,
然后点选Run|Parameters 菜单,在对话框的Host Application处输入“M T X 的路径”
\mtx.exe,并且在Parameters 处输入“/ p :你的套件组件名称”。然后在Delphi 的
集成开发环境中设定断点,执行此MTS 套件组件,再执行客户端应用程序即可调试。
如何调试COM+对象:使用和上面一样的步骤,只是在对话框的HostAppli cation
处输入“Windows 2000 的目录”\system32\dllhost.e x e,并且在Par ameters 处输
入“/ProcessID :你的套件组件的GUID”。然后在Delphi 的集成开发环境中设定断点,
执行此MTS 套件组件,再执行客户端应用程序即可调试。此外,你还必须先在
Component Services 中打开调试的功能。请参考稍后的实例说明。
经过以上步骤你应该可以在Windows 95/98、Windows NT和Windows 2000中调试
MTS/COM+应用系统了。
===摘自李维的ado三层开发