加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Delphi检索ADO错误

发布时间:2020-12-15 04:11:52 所属栏目:大数据 来源:网络整理
导读:我正在使用带有ADO的Delphi 2007来访问SQL Server 2008数据库. 数据库上的存储过程预先验证输入,如果验证失败,则返回错误结果集(包含自定义错误信息).使用SQL Server Management Studio,当我运行存储过程时,我在一个选项卡中获取自定义错误结果集,在另一个选
我正在使用带有ADO的Delphi 2007来访问SQL Server 2008数据库.

数据库上的存储过程预先验证输入,如果验证失败,则返回错误结果集(包含自定义错误信息).使用SQL Server Management Studio,当我运行存储过程时,我在一个选项卡中获取自定义错误结果集,在另一个选项卡中获取本机错误消息.

回到我的Delphi应用程序,当我打开存储过程时,我可以访问自定义错误结果集.但是,ADO连接上的Errors对象不包含本机错误.

如何访问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;

选项2)
您可以使用@@ error变量从sql server获取最后一个错误.

select @@error

当在Sql Server中发生错误时,您可以使用@@ ERROR全局变量获得所有错误号.没有@@ ERROR_MESSAGE全局变量来获取错误描述.
有关完整的错误消息,您可以使用错误号查询master..sysmessages表:

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

但是大多数这些消息都有占位符(如%s,%ld),你也可以使用这个Stored Procedure.

您可以阅读这篇文章Error Handling in SQL Server – a Background以获取更多信息.

再见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读