Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Der beste Weg, um Verstöße gegen eindeutige SQL-Einschränkungen in c# während des Einfügens abzufangen

Was Sie suchen, ist eine SqlException, insbesondere die Verletzung von Primärschlüsseleinschränkungen. Sie können diesen speziellen Fehler aus dieser Ausnahme herausholen, indem Sie sich die number-Eigenschaft der ausgelösten Ausnahme ansehen. Diese Antwort ist wahrscheinlich relevant für Ihre Frage:Wie kann man die Primärschlüsselduplizierung anhand eines SQL Server 2008-Fehlercodes identifizieren?

Zusammengefasst sieht es so aus:

// put this block in your loop
try
{
   // do your insert
}
catch(SqlException ex)
{
   // the exception alone won't tell you why it failed...
   if(ex.Number == 2627) // <-- but this will
   {
      //Violation of primary key. Handle Exception
   }
}

BEARBEITEN:

Das mag ein bisschen hacky sein, aber Sie könnten auch einfach die Nachrichtenkomponente der Ausnahme untersuchen. Etwa so:

if (ex.Message.Contains("UniqueConstraint")) // do stuff