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

本文关键字:消息 用户 操作 SqlException | 更新日期: 2023-09-27 18:13:00

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

UPDATE语句与外键约束FK_Parameter_Status冲突。冲突发生在数据库"LIMS"表中"dbo。状态",列"StatusId"。

%ls语句与%ls约束"%.*ls"冲突。数据库"%"中发生冲突。*ls",表"%.*ls"% .*ls% .*ls% .

我可以观察

%lsUPDATEFOREIGN KEY等取代

在c#中,我将获得错误信息,我想从中提取被SQL Server取代的部分。我将在我的库中维护SqlErrors,并将它们替换为自定义消息。

要显示的自定义消息如。

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

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

SQLException有数字属性,你可以使用这个数字然后翻译成任何你想要的文本

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友好消息使用它的错误编号