[quote=ccllss]Marcio,
Brother… Esses seus métodos estão bem estranhos… Permita-me algumas observações.
1 - Porque vc faz três chamadas ao método exibirCamposDaTabela() ? Não seria melhor vc executar somente uma vez fora do “for” e armazenar numa variável e depois recuperar conforme vc deseja. Assim como vc fez, se a tabela contiver 10 campos, vc vai chamar 30 vezes esse método, ou seja, 30 vezes vc irá consultar a base, se a quantidade de registros for grande a performance vai ser horrível, porque não tem nenhuma cláusula “WHERE” na consulta.
Ex.:
public String exibirAsRespostas() throws SQLException
{
String resp = "";
String campos[] = exibirCamposDaTabela();
for(int i = 0; i < campos.length; i++)
{
String campo = campos[i];
String sql = "select count(" + campo + ") as " + campo + " from mdl_dev_tb_quest_entrada_pag2";
PreparedStatement stm = this.c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while (rs.next())
{
resp += rs.getString(campo);
}
}
return resp;
}
2 - Porque vc concatena o resultado da consulta numa variável resp do tipo String, se o resultado dessa query sempre será um único registro com o valor total de registros?
3 - Se vc notar o resultado sempre será o mesmo para todos os campos, pois vc não especificou cláusula a “WHERE” em sua consulta.
A propósito para vc ter uma idéia do que está acontecendo, mande imprimir a sql resultante e analise para ver se existe algum problema nela. Adicione esta linha depois da linha 23:
String sql = "select count("+exibirCamposDaTabela()[i]+") as "+exibirCamposDaTabela()[i]+" from mdl_dev_tb_quest_entrada_pag2";
System.out.println("Query ==> " + sql);
@braços[/quote]
Realmente cara… eu não tinha me tocado… foi um pouco de falta de atenção também… acontece que esses dados eles sao dados numéricos ai eu tenho que fazer uma pesquisa em cima deles pra poder gerar um relatório pro local onde trabalho… realmente eu nao tinha prestado atenção que sempre ia dar o mesmo resultado pra todos os campos… mas agora já corrigi o código… a questao de dar null pointer expection é pq eu estava tentando omitir os tres primeiros campos da pesquisa… mas ele parece não aceitar… observa novamente…
[code] public void pegarCamposDaTabela() throws SQLException {
String sql = “select * from mdl_dev_tb_quest_entrada_pag2”;
PreparedStatement stm = c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
ResultSetMetaData md = rs.getMetaData();
campos = new String[md.getColumnCount()];
for (int i = 1; i < md.getColumnCount(); i++) {
campos[i] = md.getColumnLabel(i);
}
rs.close();
stm.close();
}
public String listarAsRespostasPorCampo() throws SQLException {
pegarCamposDaTabela(); // chama o metodo para popular o vetor
String resp = "";
for (int i = 3; i < campos.length; i++) {
if (!campos[i].equals(null)) {
String sql = "select count(" + campos[i] + ") as " + campos[i] + " from mdl_dev_tb_quest_entrada_pag2";
System.out.println("Query ==> " + sql);
PreparedStatement stm = this.c.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while (rs.next()) {
resp += rs.getString(campos[i]) + "\n";
}
} else {
i++;
}
}
return resp;
}[/code]