Artículos
Java

Ejemplo BatchUpdateException

28/Oct/2016

Ya hemos visto como podemos insertar registros en una tabla mediante un BatchUpdate. Pero cual sería un ejemplo BatchUpdateException cuando ejecutemos estas sentencias. Veamos como simularlo.

Preparar una tabla

Lo primero que haremos será crear una tabla que permita insertar números del 0 al 9. Además sobre esta tabla crearemos un índice para que no se puedan repetir los números. De esta forma cuando intentemos insertar un número repetido generará un error, error que controlaremos mediante la BatchUpdateException.

La tabla la creamos mediante una sentencia SQL CREATE TABLE.

PreparedStatement stmt = con.prepareStatement("CREATE TABLE temporal (numero TINYINT(1) NOT NULL)");  
stmt.execute(); 
stmt.close();

Y su respectivo índice con la sentencia SQL CREATE UNIQUE INDEX.

stmt = con.prepareStatement("CREATE UNIQUE INDEX indicenumero ON temporal(numero)");  
stmt.execute(); 
stmt.close();

Insertar una lista de números

Ahora vamos a realizar una inserción en batch de números. En esta lista de números habrá números repetidos para que falle la inserción y se genere la BatchUpdateExcepcion.

int[] valores = {1,2,2,3,1,4,1,2};

PreparedStatement carga = con.prepareStatement("INSERT INTO temporal VALUES (?)");	    	 
	    	  
for (int x=0;x

Controlar BatchUpdateException

Cuando lanzamos el método .excecuteBatch() se lanzarán todas las inserciones, cuando se llegue a los números repetidos se irá lanzando la BatchUpdateException, si bien, el resto de números serán insertados.

Para controrlar la BatchUpdateException utilizamos el siguiente código

} catch (BatchUpdateException bue) {
  int[] errores = bue.getUpdateCounts();
  System.out.println("--Errores en el Batch--\n");
	    	  
  for (int x=0;x

Vemos que el método .getUpdateCounts() nos devuelve un array de enteros que representan cada uno de los INSERT que se han ejecutado. Los valores mayores de 0 representarán aquellos que se han insertado correctamente, y los que tengan un valo menor de 0 serán aquellos que hayan fallado.

Es por ello que recorriendo el array podemos listar aquellas sentencias que fallaron. Obteniendo por consola la siguiente salida:

Error insertando el valor 2 de la posición 2
Error insertando el valor 1 de la posición 4
Error insertando el valor 1 de la posición 6
Error insertando el valor 2 de la posición 7

Espero que este ejemplo BatchUpdateException haya servidor para ver como se maneja dicha excepción.

Código Fuente

Descárgate el código fuente de Ejemplo BatchUpdateException
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
0 Comentarios
Opiniones integradas
Ver todos los comentarios