Ajuda em contar os valores de uma tabela do banco de dados!(RESOLVIDO)

Oi pessoal eu tenho que fazer a somatoria dos valores de uma das tabelas do banco de dados, quer dizer eu tenho que pegar cada valor e soma um a um pra ter o resultado final, pra tentar fazer isso eu tentei assim criei uma variavel String strTotalDebitos, para receber o valor de c.getVal_debito();, que eh a variavel que recebe os valores referente a tabela de debitos, bom pra soma-las eu tentei fazer assim:

String strTotalDebitos = c.getVal_debito(); strTotalDebitos = c.getVal_debito() + c.getVal_debito();

e assim:

String strTotalDebitos = c.getVal_debito(); strTotalDebitos = strTotalDebitos + c.getVal_debito();

mas ele imprimi somente o ultimo valor duas vesez assim:

57.7457.74

sendo que o ultimo valor eh 57.74, ou seja ele so repeti um do lado do outro, achei que podia ser tambem por que estou usando o setText para imprimir por que naum outro, fica assim pra imprimir dentro de um textField:

Test.Txt4.setText(strTotalDebitos);

Sera que alguem ai sabe me dizer como que eu faço pra imprimir a somatoria de todos os valores da tabela de debitos, por favor me ajudem!

Samea!!

Acima o que vc esta fazendo é concatenar duas String!!!

Pois o operador + em String não faz calculo e sim concatena!!

tente receber este valor e converter com o Integer.parseint(); e depois fazer a soma!!!

Espero ter ajudado!!!
:slight_smile:

Vc pode tambem utilizar um SUM, no proprio sql.

SELECT SUM(valor) FROM tabela

:stuck_out_tongue:

Oi pessoal eu tentei converter a minha string pra integer mas ta dando erro estou fazendo alguma coisa errada!
Eu tambem tentei fazer com o selecte mas naum me trousse resultado nenhum!
Bom eu fiz assim pra tentar converter a string em integer

String strTotalDebitos = String.valueOf(c.getVal_debito());// aqui eu recebo o valor do banco na variavel que eu vou conveter Integer I = new Integer(strTotalDebitos); i = I.intValue();// aqui eu mostro que eu vou usar o valor do integer i = I + I;

Se vc poder me ajudar por eu so converte string em inteiro uma vez e naum estou me lembrando direito, ja faz um tempinho!
Me ajudem ai por favor!

Samea!

Vamos lá


String strTotalDebitos = String.valueOf(c.getVal_debito());// aqui eu recebo o valor do banco na variavel que eu vou conveter

 int strTotalDebitosConvertido = Integer.parseint(strTotalDebitos); //Aqui sua variavel strTotalDebitosConvertido recebe os valores da variavel strTotalDebitos convertido em int.

 //Após isso vc cria uma variavel que faz sua soma, lembrando que agora tem que somar a variavel strTotalDebitosConvertido, pois ela que esta em int.

//Apos a soma converta a sua variavel de soma para String.
String strTotalDebitosConvertidoString = Integer.toString("o nome da variavel que efetua o calculo");

Espero que tenha ajudado!!!

Caso não consigue poste o codigo de seu select!!
:smiley:

Naum roda quando eu coloco o parsetInt pra rodar eu tenho que usar getInteger
assim:

Integer strTotalDebitosConvertido = Integer.getInteger(strTotalDebitos);

mas da erro quando eu tento fazer isso:

int soma = strTotalDebitosConvertido + strTotalDebitosConvertido;

da erro e mesmo que eu troque int soma por Integer soma da o mesmo erro, o que estou fazendo de errado agora?!

No meu select esta assim: ResultSet rs = st.executeQuery(“select * from cobraca tes, cobraca est where nom_arquivo_inc = ‘9999’ and tes.programa = est.programa and tes.ligacao = est.ligacao”);

Me ajudem ai por favor!

Samea!!!

Blz vc executou este select e depois jogous estes dados onde?!!

Vc fez um:

while(rs.next){
    //Qual codigo?!!
}

Poste o codigo completo que fica mais facil lhe ajudar!!!

Abraços!!!
:smiley:

Bom estou fazendo assim:

[code]package teste;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;

public class NovoRecebeBanco implements ActionListener{

private String Drive = "oracle.jdbc.OracleDriver";
private String URL= "endereco do banco";
private String USARNAME = "usuario";
private String PASSWORD = "senha";
private Connection conn;
private JScrollPane     js;

public static List listacliente;

public NovoRecebeBanco(){
    try{
    	Class.forName(this.Drive);
    	this.conn = DriverManager.getConnection(URL, USARNAME, PASSWORD);

	} catch (ClassNotFoundException e){
        System.out.println("Não foi possivel encontrar o driver de banco: " + e.getMessage());
    } catch(SQLException e){
        System.out.println("Erro ao conectar com o banco: " + e.getMessage());
    }


try{
          	  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
              String url = "endereco banco";
              this.conn = DriverManager.getConnection (url, "usuario", "senha");
              Statement st = conn.createStatement();
              int i =0;

              ResultSet rs = st.executeQuery("select * from cobraca tes, cobraca est where nom_arquivo_inc = '9999' and tes.programa = est.programa and tes.ligacao = est.ligacao"); 


              
              List listacliente = new ArrayList<cliente>();  // Lista de conjunto de clientes que vai receber o resultado da sua consulta.


              	//imprimindo resultado
              	while (rs.next()) {
              		String strNovaStrig = " ";
                  	String strZero ="0";
                  	String strnom_cliente = rs.getString("nom_cliente");     // nome do cliente
                  	String str_tipodoc = null;
                  	String strendereco_leit = rs.getString("endereco_leit"); //endereco do cliente
                  	String strcpf = rs.getString("cpf");//cpf
                  	String strcgc = rs.getString("cgc");//cgc
                  	                                    //ta faltando do numero da ksa dio cliente
                  	String strnom_bairro_leit = rs.getString("nom_bairro_leit");//nome do bairro
                  	String strcod_cep_leit = rs.getString("cod_cep_leit");//cep do cliente
                  	String strnum_residencial = rs.getString("num_residencial");     // numero do telefone*/
                  	String str_contador = null;

                  	strnom_cliente = BarraCaracteres.BarraCaracteres(strnom_cliente, 45);//chamando a funcao barraCaracteres para imprimir somente os primeiros 45 caracteres
                  	strnom_cliente = InserirEspaco.InserirEspaco(strnom_cliente, 45);//chamando a funcao inserir espaco quando o nome do cliente tiver menos que 45 caracteres
                  	strendereco_leit = BarraCaracteres.BarraCaracteres(strendereco_leit, 50);//chamando a funcao barraCaracteres para imprimir somente os primeiros 50 caracteres
                  	strnom_bairro_leit = BarraCaracteres.BarraCaracteres(strnom_bairro_leit, 25);//chamando a funcao barraCaracteres para imprimir somente os primeiros 25 caracteres
                  	strcod_cep_leit = InserirZero.ZeroDireita(strcod_cep_leit, 8);////chamando a funcao inseri zero para preencher com zeros os caracteres do cep do cliente

                  	//if para imprimir o cpf e cgc com insersao de zeros quando nulos valores

                  	if ((strcpf == null) | (strcpf == "")){
                  		if ((strcgc != null) & (strcgc != "")){
                  			strcpf = strcgc;
                  			str_tipodoc = "1";
                      	}else {
                      		strcpf = "00000000";
                  			str_tipodoc = " ";
                  			                    		}
                  	}else {
                  		str_tipodoc = "2";

                  	}

                  	strcpf = InserirZero.InserirZero(strcpf, 15);

                  	if(strnum_residencial == null){
                  		strnum_residencial = "00000000";
                  	}

                  	//para inserir contadores no final de cada linha
                  	str_contador = String.valueOf(i + 1);
                  	i = (i + 1);


                  	strnum_residencial = BarraCaracteres.BarraCaracteres(strnum_residencial, 8);//imprimi somente os 8 primeiros digitos da tabela de telefone
                  	strnum_residencial = SemValores.SemValores(strnum_residencial, 8);//inseri tres na frente dos numeros de telefones
                  	str_contador = InserirZero.InserirZero(str_contador, 6);//inseri zeros na frente do numero sequencial de cada linha ate complentar 6 caracteres


                  	Test.TxtArquivo.append("01");        //tipo do registro
                  	Test.TxtArquivo.append("69029160");    //praca de concessao
                  	Test.TxtArquivo.append(strnom_cliente);// nome do cliente
                  	Test.TxtArquivo.append(str_tipodoc);//TIPO DE DOCUMENTO
                  	Test.TxtArquivo.append(strcpf);//CPF OU CGC
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 20)); //numero de RG
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 8)); //DATA DE NASCIMENTO
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 45)); //FILIACAO
                  	Test.TxtArquivo.append(strendereco_leit);//endereco do cliente
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strZero, 5));//numero DA KSA DO cliente
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 30)); //COMPLEMENTO
                  	Test.TxtArquivo.append(strnom_bairro_leit);//nome do bairro
                  	Test.TxtArquivo.append(strcod_cep_leit);//CEP DO CLIENTE
                  	Test.TxtArquivo.append("Manaus");//CIDADE
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 24));
                  	Test.TxtArquivo.append("AM");//UF
                  	Test.TxtArquivo.append("92");//FONE DDD
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 20)); //BRANCOS
                  	Test.TxtArquivo.append(strnum_residencial);//NUMERO DO TELEFONE
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strZero, 10));//codigo de retorno
                  	Test.TxtArquivo.append(str_contador);//sEquencial de registro
                  	Test.TxtArquivo.append(" \n");

                  	//dados referentes aos debitos

                  	String strDataVencimento = rs.getString("dat_vencto");//6

                  	String strData_registro = rs.getString("dat_compra");//7
                  	String strValorDebito = rs.getString("val_debito");//8
                  	String strcod_programa = rs.getString("cod_programa");//9
                  	String strnum_ligacao = rs.getString("num_ligacao");//10

                  	strDataVencimento = InserirZero.InserirZero(strDataVencimento, 8);
                  	strData_registro = InserirZero.InserirZero(strData_registro, 8);
                  	strValorDebito = InserirZero.ZeroDireita(strValorDebito, 13);
                  	strcod_programa = InserirEspaco.InserirEspaco(strcod_programa, 30);
                  	strnum_ligacao = InserirZero.InserirZero(strnum_ligacao, 8);

                          //para inserir contadores no final de cada linha
                  	str_contador = String.valueOf(i + 1);
                  	i = (i + 1);

                  	str_contador = InserirZero.InserirZero(str_contador, 6);//inseri zeros na frente do numero sequencial de cada linha ate complentar 6 caracteres


                  	Test.TxtArquivo.append("02");//1- tipo de registro
                  	Test.TxtArquivo.append(str_tipodoc);//2- tipo de documento
                  	Test.TxtArquivo.append(strcpf);//3- cpf ou cgc
                  	Test.TxtArquivo.append("I");//4-codigo de operacao
                  	Test.TxtArquivo.append("C");//5- comprador, fiador, avalista
                  	Test.TxtArquivo.append(strDataVencimento);//6- data do vencmento
                  	Test.TxtArquivo.append(strData_registro);//7- data do egistro
                  	Test.TxtArquivo.append(strValorDebito);//8- valor do debito
                  	Test.TxtArquivo.append(strcod_programa);//9- numero de aviso
                  	Test.TxtArquivo.append(strnum_ligacao);//10- numero da ligacao
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strZero, 2));//11- natureza da inclusao
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strZero, 3));//12- motivo da inclusao
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strNovaStrig, 232));//13- brancos
                  	Test.TxtArquivo.append(BarraCaracteres.StringOfChar(strZero, 10));//14- codigo de retorno
                  	Test.TxtArquivo.append(str_contador);
                  	Test.TxtArquivo.append(" \n");

                  	cliente c = new cliente();

                  	c.setNom_cliente(rs.getString("nom_cliente"));
                  	c.setEndereco_leit(rs.getString("endereco_leit"));
                  	c.setCpf(rs.getString("cpf"));
                  	c.setCgc  (rs.getString("cgc"));
                  	c.setNom_bairro_leit (rs.getString("nom_bairro_leit"));
                  	c.setCod_cep_leit (rs.getString("cod_cep_leit"));
                  	c.setNum_residencial(rs.getString("num_residencial"));
                  	c.setDat_vencto (rs.getString("dat_vencto"));
                  	c.setDat_compra (rs.getString("dat_compra"));
                  	c.setVal_debito (rs.getString("val_debito"));
                  	c.setCod_programa (rs.getString("cod_programa"));
                  	c.setNum_ligacao (rs.getString("num_ligacao"));



                  	System.out.println(c.getNom_cliente());

                  	listacliente.add(c);
                  	String strTotalCliente = String.valueOf (i+1);
     	   	     	

     	   	String strTotalDebitos = String.valueOf(c.getVal_debito());
     	   	Integer strTotalDebitosConvertido = Integer.getInteger(strTotalDebitos); //eu fiz assim por que naum da pra usar o parseInt
     	   	Integer soma = strTotalDebitosConvertido +strTotalDebitosConvertido;//quando eu comento essa linha e a de baixo roda direito mas se naum da erro quando eu clico pra fazer a consulta no banco
     	   	String somaconvertida = Integer.toString(soma);


     	   	Test.Txt3.setText(strTotalCliente);
     	   	Test.Txt4.setText(somaconvertida);

              	}
              	rs.close();
              	st.close();
              	conn.close();


              	// Tira todas as linhas da tabela.
              	DefaultTableModel dtm = (DefaultTableModel) Test.table.getModel();  // Esta linha pega o formato da sua tabela
              	if (dtm.getRowCount() > 0) {
              		for (int i1 = (dtm.getRowCount() - 1); i1 >= 0; i1--) {
              			dtm.removeRow(i1);
              		}
               }

              	// Insere dados da lista (resultado da sua query)
                cliente testec;
                for (int i1 = 0; i1 < listacliente.size(); i1++) {
                	testec = (cliente) listacliente.get(i1);
                    dtm.addRow(new Object[]{testec.getNom_cliente(), testec.getEndereco_leit(),testec.getCpf(), testec.getCgc(), testec.getNom_bairro_leit(), testec.getCod_cep_leit(), testec.getNum_residencial(),testec.getDat_vencto(), testec.getdat_compra(), testec.getVal_debito(), testec.getCod_programa(), testec.getNum_ligacao()});
                }


                //mensagem de erro para quando ocorrer problemas na conexao com o banco de dados
             	}catch(SQLException e1){
                   System.out.println("Erro ao conectar ao banco");
                   e1.printStackTrace();

				}finally{ // Finalizando a conexão
                   System.out.println("Encerrando a conexão");

              }


}

	public static JButton main(String[] args) {
		NovoRecebeBanco app = new NovoRecebeBanco();
        String url = "endereco do banco";
        //app.show();
		return null;



	}

	public static int getColumnCount() {
		// TODO Auto-generated method stub
		return 0;
	}

	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub

	}

}[/code]

Tenho quase certeza que eh na parte onde estou fazendo a soma que esta todo o erro, opis quando eu comento roda normal, a naum ser quando eu uso o parseInt, ai naum roda! me ajudem achar o erro por favor!

Por favor tem alguem ai que saiba como somar os valores de uma coluna do banco de dados, gente eu ja tentei de tudo ja tentei assim:

[code]String strTotalDebitos = String.valueOf(c.getVal_debito());

     	   	     	int strTotalDebitosConvertido = Integer.parseInt(strTotalDebitos);
     	   	     	
     	   	     	int soma = strTotalDebitosConvertido + strTotalDebitosConvertido;
     	   	     	
     	   	     	String strTotalDebitosConvertidoString = Integer.toString(soma);[/code]

Mas naum deu certo, da os seguintes erros:

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “1095.11”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at teste.NovoRecebeBanco.(NovoRecebeBanco.java:208)
at teste.NovoRecebeBanco.main(NovoRecebeBanco.java:299)
at teste.Test.actionPerformed(Test.java:254)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Ele so roda sem dar erros se eu comentar todas as linhas abaixo dessa:

int strTotalDebitosConvertido = Integer.parseInt(strTotalDebitos);

e trocar nessa linha int por Integer e parseInt por getInteger!

Alguem ai pode me ajudar por favor willricardo me ajuda por favor naum consigo fazer!

SOCOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOORRO!

vc em noção do quanto esta procedural esse seu Objeto NovoRecebeBanco ??

não acredito que vc precise de 200 linhas para construir um objeto, sem ter q criar métodos…

vc esta tornando seu código ilegivel ate para vc mesma, vc deveria separar isso em trechos bem definidos…

O meu codigo esta muito grande por que quando eu faço a consulta ele imprimi o resultado do banco de dados em dois componentes um JTextField e Em JTable, eu naum sabia como salvar os registros da tabela como arquivo txt entao joguei toda a consulta em um textField que naum aprece na tela e depois quando for pra salvar eu pego os dados que estao no textField, alem do mas no meu arquivo txt eu tenho mas informações do que na tabela out tenho informações que são fixa entende!
Como eu naum sei como fazer um butao executar duas funções ao mesmo tempo ficou assim, quer dizer, na minha classe principal eu manda o butao executar essa consulta assim:

if (e.getSource() == CmdConsultar) { CmdConsultar = NovoRecebeBanco.main(null); }

E pra fazer o que eu queria com duas funções diferentes tipo uma pra cada componente eu tentei fazer assim:

if (e.getSource() == CmdConsultar) { CmdConsultar = NovoRecebeBanco.main(null); CmdConsultar = ConsultaBanco.main(null); }

mas como naum da pra fazer isso pelo menos eu naum consegui entao ficou assim!
Estou mexendo com java faz pouco tempo e estou aprendendo na “marra” entende!
Mas vc sabe me ajudar com a somatoria de valores de uma das colunas da minha tabela teoricamente o que estou fazendo esta certo mas quando eu executo da erros!
Me ajudem!

samea,

vamos por partes, que nem Jack…

o erro está ocorrendo pq vc está tentando parsear para int, uma string que seria um double…faça Double.parseDouble(valor), que irá funcionar…

agora melhorando o código:

  • Faça uma classe que crie a conexão de dados e retorne a connection(depois, pode melhorar ela utilizando o pattern Singleton :lol: )…
  • Faça outra classe onde contenha os teus selects, faça a consulta no banco e crie os objetos a partir do resultado da tua consulta (Essa classe solicita a connection)…
  • Faça uma classe que é a interface gráfica com o usuário, que solicitará as informações do banco e jogará o resultado(do list que a classe que faz consulta no banco irá retornar) em uma tabela…

aos poucos vamos melhorando essa sua classe e separando as funcionalidades.

Fernando

Obrigada Fernando, realmenete nunca iria dar certo os valores da coluna naum sao inteiros muito obrigada mesmo!
Muito obrigada!
:lol:

Bom como eu gosto de postar quando consigo resolver um problema la vai:

Eu fiz assim com ajuda do fernando:

String strTotalCliente = String.valueOf (i+1); strValorDebito = String.valueOf(i+i); Double strTotalDebitosConvertido = Double.parseDouble(strValorDebito); double soma = strTotalDebitosConvertido; soma = soma + strTotalDebitosConvertido; String strTotalDebitosConvertidoString = new Double(soma).toString();

Valeu pessoal!

samea…

Eu acho que fica melhor substituir essa linha:

 String strTotalDebitosConvertidoString = new Double(soma).toString(); 

por essa:

String strTotalDebitosConvertidoString = String.valueOf(soma);  

Eu particularmente não gosto de pegar um Objeto e transformá-lo para String através do método toString()…Utilizo ele apenas para debug, e poder verificar a representação do objeto de uma forma mais legível.

Ta legal eu ja mudei pra String.valueof(soma);

Obrigada mais uma vez por mais uma dica! :lol: