Sembra che mysql stia generando un codice di errore 1062 per la chiave primaria duplicata. Puoi controllare il codice di errore per la tua eccezione 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 riguarda fornitori di database incrociati, poiché fornitori diversi potrebbero avere codici di errore diversi per PK duplicati.