sql >> Databasteknik >  >> RDS >> Sqlserver

Bästa sättet att fånga sql unika begränsningsöverträdelser i c# under infogning

Det du letar efter är en SqlException, specifikt överträdelsen av primära nyckelbegränsningar. Du kan få det här specifika felet ur detta undantag genom att titta på number-egenskapen för det kastade undantaget. Det här svaret är förmodligen relevant för vad du behöver:Hur identifierar man primärnyckeldupliceringen från en SQL Server 2008-felkod?

Sammanfattningsvis ser det ut så här:

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

EDIT:

Detta kan vara lite hackigt, men du kan också bara inspektera meddelandekomponenten i undantaget. Något så här:

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


  1. java.sql.SQLException:Ingen lämplig drivrutin hittades för jdbc:microsoft:sqlserver

  2. Hur ansluter du till en LDAP-server med node-oracledb?

  3. INSERT INTO kontra SELECT INTO

  4. Finns det någon skillnad mellan DateTime i c# och DateTime i SQL-servern?