Posso utilizar os métodos addBatch() e executeBatch() para simplesmente trazer resultados de uma consulta com select no meu banco de dados?Ou alguém já fez isso? Pesquisei um pouco por isso na internet mas só encontrei exemplos que demonstravam a utilização deles para se fazer uma inserção em tabelas. Preciso saber pois senão teria que escrever código que me faria exigir o máximo da máquina em termos de recursão (muitos laços do tipo for). Obrigados a todos!
Eles são só para consultas de atualização mesmo, por isso o termo executeBatch.
Se você rodasse um conjunto de selects, como ele saberia quais das tabelas retornar?
Se você quer juntar a linha de várias consultas iguais, use a clausula UNION no seu SQL:
SELECT id, nome FROM tblUsuarios
UNION SELECT id, nome FROM tblUsuarioExcluidos;
Hum…putz… isto quer dizer que não é possivel? porque tipo… eu tenho um método escrito que me retorna uma somatória de um valor de um determinado campo mediante a variação de um contador que eu estipulei…
olha o código [code]
public String listarAsRespostasDaTerceiraQuestao(int cont) throws SQLException
{
String aux[] = selecionarOsCampos();
String resp = “”;
switch(cont)
{
case 0:
for(int i = 0; i < aux.length; i++)
{
if(aux[i].equals("resp_camp_1c"))
{
String sql = "select count(resp_camp_1c) as resp_camp_1c from mdl_dev_tb_quest_entrada_pag2 where resp_camp_1c like " + cont;
PreparedStatement stm = c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while(rs.next())
{
resp = "Não responderam = "+ rs.getInt(aux[i]);
}
}
}break;
case 1:
for(int i = 0; i < aux.length; i++)
{
if(aux[i].equals("resp_camp_1c"))
{
String sql = "select count(resp_camp_1c) as resp_camp_1c from mdl_dev_tb_quest_entrada_pag2 where resp_camp_1c like " + cont;
PreparedStatement stm = c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while(rs.next())
{
resp = "feminino = "+ rs.getInt(aux[i]);
}
}
}break;
case 2:
for(int i = 0; i < aux.length; i++)
{
if(aux[i].equals("resp_camp_1c"))
{
String sql = "select count(resp_camp_1c) as resp_camp_1c from mdl_dev_tb_quest_entrada_pag2 where resp_camp_1c like " + cont;
PreparedStatement stm = c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while(rs.next())
{
resp += "masculino = "+ rs.getInt(aux[i]);
}
}
}break;
}
return resp;
}[/code]
No caso entao não poderia colocar o batch para dentro do for de forma que ele entendesse cada variação como uma consulta em separado? Algo tipo isso : [code]
for (cont = 0; cont <= 2; cont++ )
{
String sql = "select count(resp_camp_1c) as resp_camp_1c from mdl_dev_tb_quest_entrada_pag2 where resp_camp_1c like " + cont;
stm.addBatch(); // não reparem que nao escrevi todo o código
}[/code]
posso fazer isso?
Ver se um select assim te ajuda.
select resp_camp_1c, count(resp_camp_1c) as resp_camp_1c
from mdl_dev_tb_quest_entrada_pag2
group by resp_camp_1c
Roda direto no banco ( Isso é, fora do Java ) e ver se é esse resultado que você quer.
Falou.