Criar um Select Sum

10 respostas
dering

Boa tarde!
Criei uma classe a parte para calcular tudo que sai do caixa sem ser registrado, estou apanhando feio comum "select sum"
no postgre que é o banco que estou utilizando o comando funciona, mas o Dao eu não estou conseguinto criar, alguem tem alguma documentação, ou exemplo.

public List<Caixa> somar(Double valor) {
  List<Caixa> resultadosoma = new ArrayList<Caixa>();
  try {
    Connection con = Conexao.getConexao();
    try {
      Statement stmt = con.createStatement();
      String sqlSelect = "select sum(valor) from caixa group by id";
      ResultSet rs = stmt.executeQuery(sqlSelect);
      preencherResultado(resultadosoma, rs);
      rs.close();
      stmt.close();
    } finally {
      con.close();
    }
  } catch (SQLException e) {
    System.out.println("Não foi possivel consultar os registros . . .");
    e.printStackTrace();
  }
  return resultadosoma;
  }

10 Respostas

lord_vaynard

A conexão com o banco está ok?
Já verificou a configuração de seu JDBC?

dering

Quase tudo esta funcionando, o insert esta mandando os registros o select também esta OK!
Eu não consigo é mostrar essa consulta com soma na tela.

lord_vaynard

dering:
Quase tudo esta funcionando, o insert esta mandando os registros o select também esta OK!
Eu não consigo é mostrar essa consulta com soma na tela.

Sem o sum funciona?

dering

lord_vaynard:
dering:
Quase tudo esta funcionando, o insert esta mandando os registros o select também esta OK!
Eu não consigo é mostrar essa consulta com soma na tela.

Sem o sum funciona?

Sim, todos os valores da tabela como: Descrição, Data, Solicitante e Valor, retornam os dados.

Alterei o Dao para:

public List<Caixa> somar(Double valor) throws SQLException{
	  List<Caixa> somatotal = new ArrayList<Caixa>();
	  try {
	  Connection con = Conexao.getConexao();
	  	try {
	  		Statement stmt = con.createStatement();
	  		String sqlSelect = "select sum(valor) from caixa group by id";
	  		ResultSet rs = stmt.executeQuery(sqlSelect);
	  		somaTotal (somatotal, rs);
	  		rs.close();
	  		stmt.close();
	  	}finally {
	  		con.close();	  		
	  	}
	  } catch (SQLException e) {
	}
	  return somatotal;
  }
lord_vaynard

Funcionou?

raci0nal

Você está passando o resultado para um ArrayList é isso?
somaTotal() é um método? Acima tem uma variável com o mesmo nome, isso torna o código bastante confuso.

Mas vamos ao problema…
Você está fazendo um Statement que retorna apenas 1 campo com 1 registro (SELECT SUM()).
Provavelmente o método somaTotal() é responsável por “converter” o retorno em uma List. O erro deve estar justamente aí… quando tenta passar um retorno escalar (SELECT SUM()) para objetos Caixa.

Dê uma verificada.

Abraços,

Marcos A. C. Jordão’’

dering

Ainda não!

O projeto é muito simples eu devo estar cometendo erro de iniciante mesmo.

entra nesse link aqui: http://201.67.73.77:8080/agendajsf/contato.faces

O foda é que não me retorna nenhum erro.

dering

raci0nal:
Você está passando o resultado para um ArrayList é isso?
somaTotal() é um método? Acima tem uma variável com o mesmo nome, isso torna o código bastante confuso.

Mas vamos ao problema…
Você está fazendo um Statement que retorna apenas 1 campo com 1 registro (SELECT SUM()).
Provavelmente o método somaTotal() é responsável por “converter” o retorno em uma List. O erro deve estar justamente aí… quando tenta passar um retorno escalar (SELECT SUM()) para objetos Caixa.

Dê uma verificada.

Abraços,

Marcos A. C. Jordão’’

Obrigado, vou verificar!

A
public Double somar(Double valor) throws SQLException{

double somatotal;

try {

Connection con = Conexao.getConexao();

try {

Statement stmt = con.createStatement();

String sqlSelect = select sum(valor)  total from caixa group by id;

ResultSet rs = stmt.executeQuery(sqlSelect);

somatotal = rs.getDouble(total);

rs.close();

stmt.close();

}finally {

con.close();

}

} catch (SQLException e) {

}

return somatotal;

}

Acho que assim resolve!

dering
<blockquote><div class="quote-author">almir_fontenele:</div>public Double somar(Double valor) throws SQLException{

double somatotal;

try {

Connection con = Conexao.getConexao();

try {

Statement stmt = con.createStatement();

String sqlSelect = “select sum(valor)  total from caixa group by id”;

ResultSet rs = stmt.executeQuery(sqlSelect);

somatotal = rs.getDouble(“total”);

rs.close();

stmt.close();

}finally {

con.close();

}

} catch (SQLException e) {

}

return somatotal;

}

Acho que assim resolve!

Vlw d+, tirou minhas duvidas com esse codigo.!
Obrigado.

Criado 12 de agosto de 2008
Ultima resposta 14 de ago. de 2008
Respostas 10
Participantes 4