Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Melhor maneira de capturar violações de restrição exclusivas do sql em c # durante inserções


O que você está procurando é uma SqlException, especificamente a violação de restrições de chave primária. Você pode obter esse erro específico dessa exceção observando a propriedade number da exceção lançada. Esta resposta provavelmente é relevante para o que você precisa:Como identificar a duplicação de chave primária de um código de erro do SQL Server 2008?

Em resumo, fica assim:
// 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
   }
}

EDITAR:

Isso pode ser um pouco complicado, mas você também pode inspecionar o componente de mensagem da exceção. Algo assim:
if (ex.Message.Contains("UniqueConstraint")) // do stuff