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

15 respostas
samea

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!

15 Respostas

willricardo

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:

D

Vc pode tambem utilizar um SUM, no proprio sql.

SELECT SUM(valor) FROM tabela

:stuck_out_tongue:

samea

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!

willricardo

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:

samea

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!

willricardo

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:

samea

Bom estou fazendo assim:

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

		}


}

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!

samea

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:

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

         	   	     	int strTotalDebitosConvertido = Integer.parseInt(strTotalDebitos);
         	   	     	
         	   	     	int soma = strTotalDebitosConvertido + strTotalDebitosConvertido;
         	   	     	
         	   	     	String strTotalDebitosConvertidoString = Integer.toString(soma);

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!

Lavieri

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…

samea

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!

Fernando_Generoso_da

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

samea

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

samea

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!

Fernando_Generoso_da

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.

samea

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

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

Criado 13 de fevereiro de 2009
Ultima resposta 19 de fev. de 2009
Respostas 15
Participantes 5