我想从UI上获取的错误消息中获取以下异常中的所有替换值,以显示自定义消息到粒度级别
UPDATE语句与FOREIGN KEY约束“FK_Parameter_Status”冲突。冲突发生在数据库“LIMS”,表中 “dbo.Status”,列'StatusId'。
%ls语句与%ls约束“%。* ls”冲突。冲突发生在数据库“%。* ls”,表“%。* ls”%ls%。* ls%ls。
我可以观察
%ls
正在被UPDATE
,FOREIGN KEY
等替换。
在C#中,我将收到错误消息,我想从中提取由SQL Server替换的部分。我将在我的库中维护SqlErrors
并将其替换为自定义消息。
我要显示的自定义消息 例如。
string.Format("{0} failed!, incorrect value was supplied for {1} field", "UPDATE", "Status")
答案 0 :(得分:2)
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;
}
示例代码副本来自:Get SqlException friendly messages using its Error Number