Try catch en inserción en base de datos

David David
30 de Octubre del 2010
Buenas


Cuando realizo una inserción en una tabla y el registro ya existe me devuelve el error típico de clave duplicada y que no se ha podido insertar. Hasta ahí todo ok, pero quiero realizar el catch de esta excepción y que no me lanze toda la traza en la consola.

Este sería el error tipico (no esta completo, es muy largo):


SQLException e1
conn.rollback()

com.microsoft.sqlserver.jdbc.SQLServerException: Infracción de la restricción PRIMARY KEY 'PK_Cuestionario'. No se puede insertar una clave duplicada en el objeto 'dbo.Cuestionario'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
........


El código es muy simple:

stInsert = conn.createStatement();


catch (SQLException e1) {

// TODO Auto-generated catch block
System.out.println("SQLException e1");
try {
System.out.println("conn.rollback()");
conn.rollback();
} catch (SQLException sqx) {
throw new Exception("Ha fallado el rollback: "
+ sqx.getMessage());
}
e1.printStackTrace();
}

Gracias