c# - 检测违反了多个唯一键中的哪个?

标签 c# .net sql-server constraints

我需要在我的 C# Winforms 应用程序中捕获 Unique 约束。在我以前的版本中,我只有一个 UniqueKey,它是 UK_StudentNo,所以我使用下面的代码和 SQLException 约束编号 2627 捕获了违规 当用户尝试为不同的学生提供相同的学号时。

catch (SqlException ex)
            {
                if (ex.Number==2627)
                {
                    MessageBox.Show("Student number already given");
                }
                else
                {
                    MessageBox.Show("Database Error !");
                }
                throw;
            }

但现在,我有另一个 UniqueKey,它是 UK_Student_NationalID,我不能将这 2 个 UniqueKeys 与它们的 ConstraintNumber 区分开来> 所以我无法理解是哪个 UniqueKey 违规引发了异常。当我想显示诸如 "Student number already given""NationalID already given"

之类的消息时,如何区分这两个 UniqueKeys

最佳答案

检查 ex.Message 中的异常消息,它应该指示违反了哪个约束。

您还可以在 ex.Errors 集合中找到更多信息。

关于c# - 检测违反了多个唯一键中的哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43595654/

相关文章:

c# - Windows 服务启动失败 : Cannot start service from the command line or debugger

c# - 无法引用 system.drawing.dll

c# - 尝试声明并行任务时出错

sql - SQL中 "IF EXISTS"和 "IF NOT EXISTS"之间的区别?

c# - 如何在 ASP.NET Core 应用程序中将记录器传递到服务器端的 SignalR hub

C#执行变量代码

.net - GDI+ 用这个 "generic error"害死我了

.net - 当套接字连续接收到超出程序处理能力的数据时会发生什么?

php - 限制和偏移多对多关系

c# - NHibernate Web 服务中的 "Could not execute query error"