使用Delphi检索ADO错误
我正在使用带有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) select @@error 当在Sql Server中发生错误时,您可以使用@@ ERROR全局变量获得所有错误号.没有@@ ERROR_MESSAGE全局变量来获取错误描述. SELECT Description FROM master..sysmessages WHERE error= @@ERROR AND msglangid=1033 但是大多数这些消息都有占位符(如%s,%ld),你也可以使用这个Stored Procedure. 您可以阅读这篇文章Error Handling in SQL Server – a Background以获取更多信息. 再见. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |