El JDBC Specification 4.0 describe un mecanismo para las actualizaciones por lotes. Como tal, las funciones de proceso por lotes en JDBC se pueden utilizar con fines de inserción o actualización. Esto se describe en el capítulo 14 de la especificación.
yo sepa no hay un mecanismo para seleccionar lotes, probablemente porque no hay una necesidad evidente de que, dado que, como otros han recomendado, sólo tiene que recuperar todas las filas que desea a la vez mediante la construcción correctamente su consulta.
int[] ids = { 1, 2, 3, 4 };
StringBuilder sql = new StringBuilder();
sql.append("select jedi_name from jedi where id in(");
for (int i = 0; i < ids.length; i++) {
sql.append("?");
if(i+1 < ids.length){
sql.append(",");
}
}
sql.append(")");
System.out.println(sql.toString());
try (Connection con = DriverManager.getConnection(...)) {
PreparedStatement stm = con.prepareStatement(sql.toString());
for(int i=0; i < ids.length; i++){
stm.setInt(i+1, ids[i]);
}
ResultSet rs = stm.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("jedi_name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
salida
select jedi_name from jedi where id in(?,?,?,?)
Luke, Obiwan, Yoda, Mace Windu
¿Hay alguna razón por la que se consideraría que necesita una cosa como una declaración por lotes de selección?
¿Qué quiere decir exactamente con "consulta por lotes"? Puede usar 'where c.id in (...)' para obtener más de un cliente. –
No tengo idea de lo que quiere decir con "conjuntos de resultados múltiples para clientes". –
@a_horse_with_no_name Me refiero a un conjunto de resultados para un cliente, no mezcle las filas de retorno. – superche