Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Meilleur moyen d'attraper les violations de contrainte unique sql en c# lors des insertions

Ce que vous recherchez est une SqlException, en particulier la violation des contraintes de clé primaire. Vous pouvez obtenir cette erreur spécifique de cette exception en examinant la propriété number de l'exception levée. Cette réponse est probablement pertinente pour ce dont vous avez besoin :Comment identifier la duplication de clé primaire à partir d'un code d'erreur SQL Server 2008 ?

En résumé, cela ressemble à ceci :

// 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
   }
}

MODIFIER :

Cela peut être un peu compliqué, mais vous pouvez également simplement inspecter le composant de message de l'exception. Quelque chose comme ça :

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