检索用Delphi ADO错误(Retrieving ADO errors using Delphi

2019-08-08 14:55发布

我使用的是2007年德尔福与ADO访问SQL Server 2008数据库。

在数据库上存储的过程prevalidates输入,并且如果验证失败则返回错误结果集(包含自定义错误信息)。 使用SQL Server Management Studio中,当我运行存储过程,我得到的自定义错误导致一个标签,并在另一本机错误消息集。

早在我的Delphi应用程序,当我打开存储过程,我可以访问自定义错误结果集。 然而, Errors对象ADO连接不包含本机错误上。

如何访问Errors集合对象,所以我可以提供有关错误原因的更多信息?

谢谢

Answer 1:

使用ADO连接错误收集选项1)。

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;

选项2)可以使用@@ ERROR变量从SQL Server获取上一个错误。

select @@error

当在SQL服务器出现错误,你可以得到的是错误号码,使用@@ ERROR全局变量。 有没有@@ ERROR_MESSAGE全局变量来获取错误描述。 对于一个完整的错误信息,您可以使用错误号查询master..sysmessages中表:

SELECT Description FROM master..sysmessages  WHERE error= @@ERROR AND msglangid=1033

但大部分这些消息有占位符(如%S,LD),你也可以使用这个存储过程 。

你可以阅读这篇文章的错误在SQL Server处理-后台获取更多信息。

再见。



文章来源: Retrieving ADO errors using Delphi