To, czego szukasz, to SqlException, a konkretnie naruszenie ograniczeń klucza podstawowego. Ten konkretny błąd można uzyskać z tego wyjątku, przeglądając właściwość number zgłoszonego wyjątku. Ta odpowiedź prawdopodobnie dotyczy tego, czego potrzebujesz:Jak zidentyfikować duplikację klucza podstawowego z kodu błędu SQL Server 2008?
Podsumowując, wygląda to tak:
// 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
}
}
EDYCJA:
Może to być trochę dziwaczne, ale możesz też po prostu sprawdzić komponent wiadomości wyjątku. Coś takiego:
if (ex.Message.Contains("UniqueConstraint")) // do stuff