Foros del Web » Programación para mayores de 30 ;) » Java »

Capturar error de un insert.

Estas en el tema de Capturar error de un insert. en el foro de Java en Foros del Web. Tengo en mi serlvet un insert con JDBC: String query = "INSERT INTO candidatos (\"NOMBRE\",\"TELEFONO\") VALUES ('"+candidato.getNombre()+"','" + +Integer.parseInt(candidato.getTelefono())+"')"; Que si meto un telefono que ...
  #1 (permalink)  
Antiguo 20/01/2009, 07:34
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Capturar error de un insert.

Tengo en mi serlvet un insert con JDBC:
String query = "INSERT INTO candidatos (\"NOMBRE\",\"TELEFONO\") VALUES ('"+candidato.getNombre()+"','" +
+Integer.parseInt(candidato.getTelefono())+"')";


Que si meto un telefono que ya existe como lo he puesto único me peta.

Y ve va al catch:


}catch (Exception e) {
}

En la consola me da el siguiente mensaje:

org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "telefono_unico"
at org.postgresql.core.v3.QueryExecutorImpl.receiveEr rorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processRe sults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(Q ueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut e(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eWithFlags(AbstractJdbc2Statement.java:336)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eUpdate(AbstractJdbc2Statement.java:282)
at es.abalia.util.Util.miraBDQueryINT(Util.java:321)
at es.abalia.servlets.Candidatos.doPost(Candidatos.ja va:156)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:729)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)


como se captura ese error en java. Como lo puedo comprobar desde mi código para según ese errror actuar.

Muchas gracias.
  #2 (permalink)  
Antiguo 20/01/2009, 10:20
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 9 meses
Puntos: 10
Respuesta: Capturar error de un insert.

Wenas

Ya lo estas capturando, lo que pasa es que no haces nada con el.

seria
}catch (Exception e)
{
e.printStackTrace();//por ejemplo
}

En este caso concreto podria ser.

}catch (Exception e)
{
if (e.getMessage().toLowerCase().indexOf("unique constraint \"telefono_unico\"") >=0)
System.out.println("El numero introducido ya esta en la BD");
}

o algo similar.

Saludos.
  #3 (permalink)  
Antiguo 25/01/2009, 06:50
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Capturar error de un insert.

Puedes hacer primero un select count mirando si existe ese telefono en la base de datos y si es asi no introducirlo sacando una alerta al usuario
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #4 (permalink)  
Antiguo 11/03/2009, 10:22
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 9 meses
Puntos: 10
Respuesta: Capturar error de un insert.

un select count puede tener problemas de rendimiento, en algunos casos puede tardar incluso mas que el select *.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.