2014-11-05 2 views
8

Ich habe eine Tabelle mit einer eindeutigen Primärschlüsselspalte namens id. Manchmal, wenn ich eine INSERT Abfrage führe, erhalte ich einen Fehler, weil der id Wert bereits benutzt wird.Catch doppelte Schlüssel einfügen Ausnahme

Kann ich diesen spezifischen Fehler mit try und catch abfangen?

+2

Was funktioniert nicht, wenn Sie versuchen/fangen? – sp00m

+0

Ich tat es, aber es fängt es nicht ein. – Josh

+0

Können Sie diesen Code zeigen? – sp00m

Antwort

9

Sieht aus wie mysql wirft 1062 Fehlercode für doppelte Primärschlüssel. Sie können den Fehlercode für Ihre SQL-Ausnahme überprüfen:

public static final int MYSQL_DUPLICATE_PK = 1062; 

try{ 
    //code that throws sql exception 
} catch(SQLException e){ 
    if(e.getErrorCode() == MYSQL_DUPLICATE_PK){ 
     //duplicate primary key 
    } 
} 

Beachten Sie, dass dieser Ansatz ist nicht Cross-Datenbank-Anbieter, da verschiedene Anbieter verschiedene Fehlercodes für doppelte PK haben könnten.

+0

Ich dachte 'SqlException' war die Klasse, war sich aber nicht sicher. Tolle Idee bei der Suche nach einem bestimmten Fehlercode - ich hatte keine Ahnung, dass das möglich war. – AdamMc331

+1

Der Vollständigkeit halber - Unter Oracle glaube ich, dass der zurückgegebene Fehlercode '1' ist (siehe hier) (http://www.dba-oracle.com/sf_ora_00001_unique_constraint_violated.htm). – OldCurmudgeon