Statement (addBatch, executeBatch, clearBatch): Ejecutar insert, update por lotes
Ejecutar sentencias por lotes. Nos basaremos para el ejemplo en tres métodos de Statement:
addBatch(String sentencia). Añade una sentencia a la lista de sentencias por lotes.
executeBatch(). Ejecuta la lista de sentencias por lotes. Retorna un array de enteros con el resultado de cada sentencia.
clearBatch(). Limpia la lista de sentencias por lotes.
Si tenemos la intención de realizar varias sentencias INSERT o UPDATE consecutivas, es mucho más eficiente utilizar la ejecución de sentencias por lotes que enviar las sentencias una por una. Creamos un método que reciba una lista de sentencias y las ejecuta por lotes: public int[] ejecutaPorLotes(List sentencias) { Connection conn = getConnection(); int[] resultado = null; Statement st = null; try { st = conn.createStatement(); for (int i = 0; i < sentencias.size(); i++) { String sentencia = (String) sentencias.get(i); st.addBatch(sentencia); } resultado = st.executeBatch(); st.clearBatch(); return resultado; } catch (SQLException e) { e.printStackTrace(); return resultado; } finally { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } Vamos a probar el código: public static void main(String[] args) { CaracteristicasJDBC car = new CaracteristicasJDBC(); ArrayList lista = new ArrayList(); lista.add("INSERT INTO USUARIOS VALUES ('Pepe',19)"); lista.add("INSERT INTO USUARIOS VALUES ('Juan',21)"); int[] resultado = car.ejecutaPorLotes(lista); for(int i=0;i System.out.println("resultado: "+resultado[i]); } } Ejecutamos y vemos la consola: Comprobamos los datos en la tabla:















