2014-11-05 4 views
8

Ho una tabella con una colonna chiave primaria univoca chiamata id. A volte, quando eseguo una query INSERT, viene visualizzato un errore perché il valore id è già utilizzato.Eccezione di inserimento chiave duplicata duplicata

Posso rilevare questo errore specifico con try e catch?

+2

Che cosa non funziona quando si utilizza un try/catch? – sp00m

+0

L'ho fatto, ma non lo sta prendendo. – Josh

+0

Puoi mostrare quel codice? – sp00m

risposta

9

Sembra che mysql stia generando un codice di errore 1062 per la chiave primaria duplicata. È possibile controllare il codice di errore per il vostro eccezioni sql:

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

Si noti che questo approccio non è croce fornitore di database, perché diversi fornitori potrebbero avere diversi codici di errore per duplicati PK.

+0

Ho pensato che 'SqlException' era la classe ma non ero sicuro. Ottima idea di controllo per codice di errore specifico - non avevo idea che fosse possibile. – AdamMc331

+1

Per completezza - Sotto Oracle credo che il codice di errore restituito sia '1' [vedi qui] (http://www.dba-oracle.com/sf_ora_00001_unique_constraint_violated.htm). – OldCurmudgeon