假设您的 MSSQL 2008 数据库中存在唯一索引约束违规,如下所示:
Violation of PRIMARY KEY constraint 'PK_ManufacturerCode'. Cannot insert duplicate key in object 'dbo.ManufacturerCode'. The duplicate key value is (8410179)
目前,我正在通过胖客户端中的全局异常处理程序处理此异常(使用 ADO 在 Delphi 6 中编写,但这并不重要,我计划将来使用 C#.NET),并将异常消息附加到一个日志框。
但我想亲自处理这个特定的重复键异常,并使用厚客户端自己的文本在客户端中显示适当的错误消息。我可以解析匹配的错误消息,但不会这样做,原因有两个:
- 这不是正确的做法 - 最好依赖一些错误代码;
- 胖客户端旨在使用不同语言的各种 MSSQL 服务器版本,这些版本可能具有不同的错误文本
使用具有自定义退出代码的 RETURN 来完成这项工作,或者不断调用特殊的存储过程来检查重复项,这并不会让我感到高兴。
最佳答案
在 ADO 中,您可以访问连接 Errors
发生错误后,检查 NativeError
属性以获取 SQL Server 特定错误号。
当您切换到 .NET 时,相同的数字将作为 SqlException
的 Number
属性公开。或SqlError
但是,查找特定的错误编号可能有点麻烦 - 对于重复 key ,错误编号为 2627。
关于sql-server - 需要一种方法来拦截 MSSQL 中的重复键异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102138/