Somar coluna de banco

Pessoal, estou desenvolvendo um programinha com NETBEANS e quero que ele some todos os valores de uma determinada coluna
do meu banco de dados, e mostro num textfield.

Estive pesquisando no fórum e achei algo que deveria dá certo. Porém está dando um um erro assim:
java.lang.StringIndexOutofBoundsException: String index out range: -1

Ta aih o codigo:

try{
String sql= (“SELECT SUM(qt_atual)FROM cad_produtos”); // lista o codigo
con_cad_produtos.executeSQL(sql); //executa a funcao no BD
con_cad_produtos.resultset.first();// pega o primeiro registro
tf_total.setText(String.valueOf(con_cad_produtos.resultset.getDouble(1)));// converte ele no primeiro registro para o textField
}
catch (Exception erro)
{
JOptionPane.showMessageDialog(null,“Erro ao somar os campos…”+erro);
}

Se alguém puder me ajudar… vlwzz

Amigo,

Ao invés de tentar achar algo já pronto, aconselho você dar uma estudada em JDBC. Você vai ver que seu problema é super simples de ser resolvido. http://www.guj.com.br/article.show.logic?id=7

Ola pessoal eu tenho que fazer um programa (estagio) para uma universidade, e eu estou fazendo um progrma aonde o cara da universidade digita o nome e o valor da despesa e no final quando ele clicar em um botão que se chama btSomar, automaticamente esse botão tem que fazer a soma de todos os valores da despesas e mostra em um jTextField.

a tabela do banco de dados é o seguinte:
nome da tablea: balanco
colunas:
id
nd=nome da despesa
vd=valor da despesa

Atenção: estou usando o Netbeans
eu sei fazer a soma dos valores só no mysql, mas não sei como fazer isso no netbeans

esta imagem é a interface do meu programa.

por favro galera alguém me ajuda a descobri como fazer essa soma!!

Um abraço

Boa noite, é simples resolver isso.
Use uma classe onde voce usara os comando sql.
crie um metodo de busca apartir de seus dados id com o select posteriormente os envie para outro metodo em parametros esses resultados do select , lá faça a soma e faça um insert.
Espero ter ajudado um pouco.

Ola amigo! fico feliz por ter respondido a minha pergunta, mas como eu sou um pouco leiga nessa área, estou começando agora, então será que não da pra vc fazer um exemplo pra mim??
esse são os meus dados:
nome da tabela=balanco
colunas=id, nd(nome da despesa) e vd(valr rda despesa).

um abraçoooo!!!

Obrigada!!

Moça,

Por favor, edite seu topico, coloque a parte de codigo-fonte entre tags [ code] e [ /code].
De uma olhadinha aqui tambem:

Obrigado
:smiley:

Bom dia a todos.

Respondendo a pergunta do nosso amigo Flintaum.

Se o erro reportado é esse :

  java.lang.StringIndexOutofBoundsException: String index out range: -1 

Então tenho quase que certeza que voce apanhou na tabela de banco de dados, registros Unidirecionais, ou seja, aqueles que só navegam em uma única direção (Forward Only - Somente para frente), isto porque voce está tentado executar o comando.

  con_cad_produtos.resultset.first();// pega o primeiro registro

Por outro lado a instrução de soma do SQL que voce está tentando executar, vai retornar apenas um único registro que é o total da soma de todos os produtos encontrados na tabela. Então para que voce deseja navegar nos registros :?: Se voce pretende executar a soma por cada produto, então tem que executar esta instrução de soma com critério e agrupado por produto, assim:


  /* Pegando a soma de todos os produtos, retornando a soma por cada produto
      neste caso, retorna mais de uma linha */

      String sql= "SELECT SUM(qt_atual) AS total_produto, produto FROM cad_produtos GROUP BY produto";

  /* Pegando a soma de cada produto, informando o nome do produto
      neste caso, retorna apenas uma linha  */

      String sql= "SELECT SUM(qt_atual) AS total_produto, produto FROM cad_produtos  WHERE produto = 'TV PHILIPS' GROUP BY produto";

Agora se voce pretende fazer navegação de registros para frente e para traz (Registros Bidirecionais) então voce tem que configurar o Statement desta forma:

    Statement meuState = minhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

[quote=yasmim3433]Ola amigo! fico feliz por ter respondido a minha pergunta, mas como eu sou um pouco leiga nessa área, estou começando agora, então será que não da pra vc fazer um exemplo pra mim??
esse são os meus dados:
nome da tabela=balanco
colunas=id, nd(nome da despesa) e vd(valr rda despesa).

um abraçoooo!!![/quote]

Bom dia Yasmim.

Para que possamos te ajudar, nos informe como voce configurou ou JDBC com o seu Banco de Dados, ou seja, como voce criou essa conexão :?:

Bom eu criei uma classe que se chama Contato1 1 que tem como função inserir e retirar dados do banco, é como se fosse um meio da interface acessar o banco de dados:

package unopar;

/**
 *
 * @author Rosilaine
 */
public class Contato1 {
    private Long id;
    private String nd;
    private String vd;

    public Long getid()
    {
        return id;
    }
    public void setid(Long id)
    {
        this.id= id;
    }
   public String getnd()
    {
        return nd;
    }
    public void setnd(String nd)
    {
        this.nd= nd;
    }
    public String getvd()
    {
        return vd;
    }
    public void setvd(String vd)
    {
        this.vd= vd;
    }


}

e crie também uma outra classe que se chama EstabeleceConexao que tem como função fazer a conexao do meu programa no banco de dados:

package unopar;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

/**
 *
 * @author JeffersonBM
 */
public class EstabeleceConexao {
   public static Connection getConexao() throws SQLException{
       try{
               Class.forName("com.mysql.jdbc.Driver");
               System.out.println("Ligando ao banco de dados...");
               return DriverManager.getConnection("jdbc:mysql://localhost/Unopar","root","");
       }catch(ClassNotFoundException e){
           throw new SQLException(e.getMessage());
       }
    }
}

Espero ter oferecidos as informações corretas!!
Estarei aguardando a sua resposta
um grande abraço.

Tentei resolver ai como exemplo, boa sorte.

[code]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Cadastro extends JFrame {

/**
 * 
 */
private static final long serialVersionUID = 1L;
JTextField jtid, jtde_despesa, jtvr_despesa;
JLabel jlid, jlde_despesa, jlvr_despesa;
JButton jbconfirmar;

public Cadastro() {
	super("Tela Soma");
	this.getContentPane();
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	this.setBounds(300, 300, 700, 180);
	JPanel jpanel = new JPanel();

	jlid = new JLabel("Código :");
	jtid = new JTextField(5);
	jpanel.add(jlid);
	jpanel.add(jtid);

	jlde_despesa = new JLabel("Nome da despesa :");
	jtde_despesa = new JTextField(20);
	jpanel.add(jlde_despesa);
	jpanel.add(jtde_despesa);

	jlvr_despesa = new JLabel("Valor R$ :");
	jtvr_despesa = new JTextField(7);
	jpanel.add(jlvr_despesa);
	jpanel.add(jtvr_despesa);

	jbconfirmar = new JButton("Somar");
	jbconfirmar.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			Contato contato = new Contato();
			contato.setId(Integer.parseInt(jtid.getText()));
			contato.setNome_despesa(jtde_despesa.getText());
			contato.setValor_despesa(Double.parseDouble(jtvr_despesa
					.getText()));
			Dao daoobj = new Dao();
			daoobj.insertDespesa(contato);

		}
	});
	jpanel.add(jbconfirmar);

	this.getContentPane().add(jpanel);
	// fim da tela

}

public static void main(String[] args) {
	Cadastro cadastro = new Cadastro();
	cadastro.setVisible(true);
}

}
[/code]
outra classe

 
public class Contato {
	private int id;
	private String nome_despesa;
	private double  valor_despesa;
	public Contato(){
		
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome_despesa() {
		return nome_despesa;
	}
	public void setNome_despesa(String nome_despesa) {
		this.nome_despesa = nome_despesa;
	}
	public double getValor_despesa() {
		return valor_despesa;
	}
	public void setValor_despesa(double valor_despesa) {
		this.valor_despesa = valor_despesa;
	}

}

outra classe [code] import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

import com.mysql.jdbc.PreparedStatement;

public class Dao {

public void insertDespesa(Contato contato)
{
	try {
	Connection con=EstabeleceConexao.getConexao();
	String sql="insert into balanco (cd_id,de_despesa,vr_despesa) value (?,?,?)";
	java.sql.PreparedStatement pst=con.prepareStatement(sql);
	pst.setInt(1,contato.getId());
	pst.setString(2,contato.getNome_despesa());
	pst.setDouble(3,contato.getValor_despesa());
	pst.execute();
	pst.close();
	con.close();
	this.calcularTotal();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}}
	
	public void calcularTotal(){
		double total=0;
		try {
			Connection con=EstabeleceConexao.getConexao();
			Statement stm=con.createStatement();
			
			ResultSet rs=stm.executeQuery("SELECT sum(vr_despesa)AS total FROM balanco");		
			while(rs.next()){
			total=rs.getDouble("total");
			}
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
			JOptionPane.showMessageDialog(null,"TOTAL DE DESPESAS R$ : " +total);
	
	
}

}
[/code]

import java.sql.DriverManager;   
import java.sql.Connection;   
import java.sql.SQLException;   
  
/**  
*  
* @author JeffersonBM  
*/   
public class EstabeleceConexao {   
   public static Connection getConexao() throws SQLException{   
       try{   
               Class.forName("com.mysql.jdbc.Driver");   
               System.out.println("Ligando ao banco de dados...");   
               return DriverManager.getConnection("jdbc:mysql://localhost/unopar","root","230581");   
       }catch(ClassNotFoundException e){   
           throw new SQLException(e.getMessage());   
       }   
    }   
}  

cd_id integer, de_despesa varchar(20), e vr_despesa double(7,2) primary key cd_id

Ola alfredo-avai, obrigada por ter mandado esse exemplo legal pra mim, mas eu ainda não estou conseguindo fazer com que a soma, ou seja, o total das despesas apareça em um jTextField!!!

O que eu tenho que fazer?
Ficarei grata com a sua resposta!!
Um grande abraço
t+ :wink:

[quote=yasmim3433]Ola alfredo-avai, obrigada por ter mandado esse exemplo legal pra mim, mas eu ainda não estou conseguindo fazer com que a soma, ou seja, o total das despesas apareça em um jTextField!!!

O que eu tenho que fazer?
Ficarei grata com a sua resposta!!
Um grande abraço
t+ ;)[/quote]

Boa noite Yasmim.

Simples, onde há a instrução:

    ...... 
    total=rs.getDouble("total");
    ......   

Substitua pela instuação:

     .....
     txtTotal.setText(Double.toString(rs.getDouble("total")));
     ....

Ola galera que ta me ajudando!! esta é uma das partes do meu programa:

ele funciona da seguinte maneira, eu add um valor no ctNd e no ctVd (que são jTextField e eu não add valor nenhum no ctId pq ele esta desabilitado) e esses valores vão para a tablea, então eu quero pegar esses valores da tabela e somar somentos os valores que foram add no ctVd. equando eu clicar no botão que se chama “Somar” terá que aparecer o total dos valores add no ctVd que esta na tabela no ctsomar( que é o ultimo jTextField).

discorpio aquqle instrução que vc me indicou pra modificar esta dando um erro!!
Primeiro pede pra criar um campo txtTotal e quando eu crio da um erro no setText! ;(

Aproveite sómente a classe de conexao.
Este código não é muito aconselhavel, pois não é modularizado, com classes e tal, mas ta funcionando blz.
tenta ai, tchau

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Cadastro extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JTextField jtid, jtdespesa, jtvldespesa, jtresultado;
	JLabel jlid, jldespesa, jlvldespesa, jlresultado;
	JButton jbconfirmar, jblimpar;

	public Cadastro() {
		super("Tela Soma");
		this.getContentPane();
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(300, 300, 700, 180);
		JPanel jpanel = new JPanel();

		jlid = new JLabel("Código :");
		jtid = new JTextField(5);
		jpanel.add(jlid);
		jpanel.add(jtid);

		jldespesa = new JLabel("Nome da despesa :");
		jtdespesa = new JTextField(20);
		jpanel.add(jldespesa);
		jpanel.add(jtdespesa);

		jlvldespesa = new JLabel("Valor R$ :");
		jtvldespesa = new JTextField(7);
		jpanel.add(jlvldespesa);
		jpanel.add(jtvldespesa);

		jlresultado = new JLabel("Total de Despesas Valor R$ :");
		jtresultado = new JTextField("", 7);

		jpanel.add(jlresultado);
		jpanel.add(jtresultado);

		jbconfirmar = new JButton("Somar");
		jbconfirmar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try {

					Connection con = EstabeleceConexao.getConexao();
					String sql = "insert into balanco (cd_id,de_despesa,vr_despesa) value (?,?,?)";
					java.sql.PreparedStatement pst = con.prepareStatement(sql);
					pst.setInt(1, Integer.parseInt(jtid.getText()));
					pst.setString(2, jtdespesa.getText());
					pst.setDouble(3, Double.parseDouble(jtvldespesa.getText()));
					pst.execute();
					pst.close();
					con.close();
					this.calcularTotal();

				} catch (SQLException e) {
				}
			}

			public void calcularTotal() {
				double total = 0;
				try {
					Connection con = EstabeleceConexao.getConexao();
					Statement stm = con.createStatement();
					ResultSet rs = stm
							.executeQuery("SELECT sum(vr_despesa)AS total FROM balanco");
					while (rs.next()) {
						total = rs.getDouble("total");
					}
				} catch (SQLException e) {
				}
				jtresultado.setText("" + total);

			}
		});
		jpanel.add(jbconfirmar);
		jblimpar=new JButton("Limpar");
		jblimpar.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				jtid.setText("");
				jtdespesa.setText("");
			    jtvldespesa.setText("");
			    jtresultado.setText("");
			}
		});
		jpanel.add(jblimpar);
		this.getContentPane().add(jpanel);
	}

	public static void main(String[] args) {
		Cadastro cadastro = new Cadastro();
		cadastro.setVisible(true);
	}
}

Vlw gente pela ajuda!!
eu consegui fazer a soma aki
to muittíssimo feliz :wink:
um abração a todos!!! :smiley: