Il JDBC Specification 4.0 descrive un meccanismo per gli aggiornamenti in batch. Pertanto, le funzionalità batch in JDBC possono essere utilizzate per scopi di inserimento o aggiornamento. Questo è descritto nel capitolo 14 della specifica.
AFAIK non esiste un meccanismo per selezionare i lotti, probabilmente perché non vi è alcuna necessità apparente poiché, come altri hanno raccomandato, è possibile recuperare semplicemente tutte le righe che si desidera in una volta creando correttamente la query.
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();
}
uscita
select jedi_name from jedi where id in(?,?,?,?)
Luke, Obiwan, Yoda, Mace Windu
C'è qualche motivo per cui si dovrebbe prendere in considerazione che avete bisogno di una cosa del genere un'istruzione batch di selezione?
fonte
2012-03-24 18:31:32
Che cosa intendi esattamente con "query batch"? Puoi usare 'where c.id in (...)' per ottenere più di un cliente. –
Non ho idea di cosa intendi con "set di risultati multipli per i clienti". –
@a_horse_with_no_name Intendo un set di risultati per un cliente, non mescolare le righe di ritorno. – superche