【问题标题】:How to find which column throws unique key constraint exception when there are more than one unique key columns in table?当表中有多个唯一键列时,如何查找哪一列引发唯一键约束异常?
【发布时间】:2012-03-29 13:26:07
【问题描述】:

我是 C# .NET 的新手。我从 2 天开始就一直在尝试,但我无法成功。
我已经创建了 Windows 应用程序。 我的表格有两个独特的列电子邮件,电话。
我想找到在插入记录时抛出唯一键约束异常的列名。我试过了,
var ex = new SqlException();
ex.Data["Mesg"] = "Exception in Email";
throw ex;

但它会导致错误“System.Data.SqlClient.SqlException'没有定义构造函数”
可能吗? 帮帮我。

【问题讨论】:

  • 我的建议是验证传入的模型,不要依赖数据库返回错误。然后您在连接之前就知道了,并且不必浪费时间与数据库交谈。现在,您可以预先发送一个简单的ArgumentException,并准确地知道问题所在,就像您刚刚进行了验证一样。
  • 您应该知道,您尝试插入/更新的数据可能违反 多个 约束,并且您只会获得其中一个(哪一个)的违规信息是不确定的)。
  • 谢谢@asawyer,@Damien_The_Unbeliever。

标签: c# sql-server exception-handling sqlexception unique-key


【解决方案1】:

您想获取此信息,而不是生产它。所以使用以下构造:

try
{
    ... (access the database here) ...
}
catch (SqlException e)
{
    ... (look at e.Message)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2013-09-24
    相关资源
    最近更新 更多