5 delphi stored-procedures ado error-reporting
我正在使用带有ADO的Delphi 2007来访问SQL Server 2008数据库.
数据库上的存储过程预先验证输入,如果验证失败,则返回错误结果集(包含自定义错误信息).使用SQL Server Management Studio,当我运行存储过程时,我在一个选项卡中获取自定义错误结果集,在另一个选项卡中获取本机错误消息.
回到我的Delphi应用程序,当我打开存储过程时,我可以访问自定义错误结果集.但是,ErrorsADO连接上的对象不包含本机错误.
如何访问Errors集合对象,以便提供有关错误原因的更多信息?
谢谢
选项 1) 使用 ADO 连接错误集合。
try
....
....
....
ADOQuery1.Open;//Execute your sql statement
except
LastErrorIndex :=ADOConnection1.Errors.Count-1;
SourceError :=ADOConnection1.Errors.Item[LastErrorIndex].Source;
NumberError :=ADOConnection1.Errors.Item[LastErrorIndex].Number;
DescriptionError:=ADOConnection1.Errors.Item[LastErrorIndex].Description;
SQLStateError :=ADOConnection1.Errors.Item[LastErrorIndex].SQLState;
NativeError :=ADOConnection1.Errors.Item[LastErrorIndex].NativeError;
end;
Run Code Online (Sandbox Code Playgroud)
选项 2) 您可以使用 @@error 变量从 sql server 获取最后一个错误。
select @@error
Run Code Online (Sandbox Code Playgroud)
当Sql Server 发生错误时,你所能得到的只是错误号,使用@@ERROR 全局变量。没有@@ERROR_MESSAGE 全局变量来获取错误描述。对于完整的错误消息,您可以使用错误号查询 master..sysmessages 表:
SELECT Description FROM master..sysmessages WHERE error= @@ERROR AND msglangid=1033
Run Code Online (Sandbox Code Playgroud)
但是这些消息中的大多数都有占位符(如 %s、%ld),您也可以使用此存储过程。
您可以阅读这篇文章SQL Server 中的错误处理 – 背景了解更多信息。
再见。
| 归档时间: |
|
| 查看次数: |
5295 次 |
| 最近记录: |