我正在使用 ASP.NET C# 将记录插入 MySql 数据库。我有一个看起来与此类似的方法:
public bool InsertRecord()
{
string message;
try
{
//Insert and Save
return true;
}
catch(Exception ex)
{
if(ex.InnerException != null)
{
message = ex.InnerException is MySqlException
? MySqlErrors.GetMySqlErrorMessage(((MySqlException)ex.InnerException).Number)
: ex.InnerException.Message;
}
else
{
message = ex.Message;
}
return false;
}
}
目前,如果它被捕获,则Message
属性Exception
为:
"Duplicate entry 'xxxxx-bbbbb' for key 'index_1"
这对用户来说很神秘,所以我很好奇是否有办法获取有关哪些字段导致重复异常的特定信息,例如,"Field B already exists in the in table".
或者"Field A and B" already exist in the table".
如果很容易获得特定领域,我想到了另外两个选项,并希望对它们发表意见。他们是:
我知道哪些字段会导致重复错误,所以我认为可以更具体的一种方法是检查数据库中是否已经存在带有字段的记录,如果存在,请将其报告给用户。这样,我避免了异常,但它需要额外的数据库调用。
我认为的另一种方法是为特定异常设置另一个类,我可以存储作为键或唯一字段的字段,例如,如果用户尝试更新汽车表并且 VIN 是唯一的,我可以简单地捕获例外,但由于我知道他们要更新的表,我可以说:
"A record with VIN "abc" already exists".