如何将SqlException消息操作为用户友好消息

我想从UI上获取的错误消息中获取以下exception中的所有替换值,以显示自定义消息到粒度级别

UPDATE语句与FOREIGN KEY约束“FK_Parameter_Status”冲突。 冲突发生在数据库“LIMS”,表“dbo.Status”,列“StatusId”中。

%ls语句与%ls约束“%。* ls”冲突。 冲突发生在数据库“%。* ls”,表“%。* ls”%ls%。* ls%ls。

我可以观察

%ls正在被UPDATEFOREIGN KEY等取代。

在C#中,我将收到错误消息,我想从中提取由SQL Server替换的部分。 我将在我的库中维护SqlErrors并将其替换为自定义消息。

我要显示的自定义消息,例如。

 string.Format("{0} failed!, incorrect value was supplied for {1} field", "UPDATE", "Status") 

SQLException具有Number属性,您可以使用此数字然后转换为您想要的任何文本。

 public static string GetSqlExceptionMessage(int number) { //set default value which is the generic exception message string error = MyConfiguration.Texts.GetString(ExceptionKeys.DalExceptionOccured); switch (number) { case 4060: // Invalid Database error = MyConfiguration.Texts.GetString(ExceptionKeys.DalFailedToConnectToTheDB); break; case 18456: // Login Failed error = MyConfiguration.Texts.GetString(ExceptionKeys.DalFailedToLogin); break; case 547: // ForeignKey Violation error = MyConfiguration.Texts.GetString(ExceptionKeys.DalFKViolation); break; case 2627: // Unique Index/Constriant Violation error = MyConfiguration.Texts.GetString(ExceptionKeys.DalUniqueConstraintViolation); break; case 2601: // Unique Index/Constriant Violation error =MyConfiguration.Texts.GetString(ExceptionKeys.DalUniqueConstraintViolation); break; default: // throw a general DAL Exception MyConfiguration.Texts.GetString(ExceptionKeys.DalExceptionOccured); break; } return error; } 

示例代码复制自: 使用其错误号获取SqlException友好消息