我使用的是2007年德尔福与ADO访问SQL Server 2008数据库。
在数据库上存储的过程prevalidates输入,并且如果验证失败则返回错误结果集(包含自定义错误信息)。 使用SQL Server Management Studio中,当我运行存储过程,我得到的自定义错误导致一个标签,并在另一本机错误消息集。
早在我的Delphi应用程序,当我打开存储过程,我可以访问自定义错误结果集。 然而, Errors
对象ADO连接不包含本机错误上。
如何访问Errors
集合对象,所以我可以提供有关错误原因的更多信息?
谢谢
使用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处理-后台获取更多信息。
再见。