Como é que faço pra somar a coluna do banco de dados com a expressão while?
Vc quer somar e atualizar o resultado de um campo em um tabela do banco ?
Se for isso, eu nao acho que eh eficiente vc somar e dar o update dentro do loop.
Nao seria mais facil fazer assim :
1 - pega o valor do campo no banco e guarda numa variavel.
2 - faz o while atualizando (soma) essa variavel.
3 - quando vc sair do loop atualiza o banco com o valor.
//Daniel
Não entendi, explica melhor o que vc quer fazer.
Cara, se você quer apenas somar uma coluna de uma tabela então faça isso via SQL, com
ResultSet rs = stmt.executeQuery("SELECT SUM(Campo_Qualquer) as Campo_Soma FROM Tabela");
while (rs.next()) {
editValorSoma.setText(String.valueOf(rs.getFloat("Campo_Soma")));
}
rs.close();
Um abraço!
Hum…
Consegui graças a vocês.
[code]double l=0
try{ //tratamento de erros
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);//busca Driver
//conecta no BD
Connection con = DriverManager.getConnection(“jdbc:odbc:A1”,senha,senha);
Statement stmt = con.createStatement(); //objeto comdo sql
ResultSet rs = stmt.executeQuery("SELECT * from registro");
while (rs.next()) {
l=l+rs.getDouble(“Totalp”);
} [/code]
Abraço a todos!
Isso, brother!
Mas se tiver muitos registros na tabela seu loop fica inviável fazendo referência à tantos objetos…
Eu havia cometido um erro de digitação em [color=blue]“editValorSoma.setText(String.valueOf(rs.getFloat(“Campo_Qualquer”)));”[/color], não é
“Campo_Qualquer”, nesse caso seria [color=red]“Campo_Soma”[/color]; está corrigido…
Sinceramente te aconselho a utilizar o SELECT SUM…
Um abraço!
Na verdade é relativo, pq usando o SUM vc apenas joga todo processamento no servidor, se vc tiver um servidor dedicado a isso blz, se for na mesma maquina não tem sentido. Parece coisa de DBA que joga tudo no banco, sem ofenças Linkel, é apenas uma opinião, até porque uso muito o select sum para poupar trabalho rsrsrs
Abrassss
Olá pessoal!
Linkel segue o código:
[code]
ResultSet rs = stmt.executeQuery(“SELECT SUM(Totalp) as Totalp FROM registro”);
while (rs.next()) {
l=rs.getDouble(“Totalp”); [/code]
Na verdade eu não consegui entender o comando da soma via sql, pois está dando um erro de referencia circular causada pelo Totalp.
Se fôssemos interpretar esse código seria mais ou menos assim. Seleciona a soma ou simplesmente soma “Totalp” com no momento em totalp ou simplesmente da tabela registro. Bom parece que o código está certo, só que na hora da execução aparece esse erro de referencia circular.Deve está faltando algum detalhe para isso.
Eu vou tentar pesquisar vários tópicos e tentar entender os comandos sql.
Qualquer coisa pessoal me avise, de como posso interpretar esse código.
Eu posso tirar esse while… rs.getDouble(“Totalp”) e simplesmente colocar l=rs.getDouble(“Totalp”), por que o comando sql num já soma a coluna totalp?
Abraços a todos!
Cara o seu problema é conhecimento de SQL. O Comando
select sum(coluna) from Tabela
é auto explicativo, some todas as tuplas (linhas) da coluna (Coluna) da tabela Tabela.
Algumas dicas, traga somente esse campo, caso traga algum campo a mais vc precisa usar o group by. E confira se os dados da coluna referida são do tipo número.
Caso o select sum, funcione vc pode sim retirar o while, ja que a consulta vai te retornar apenas um registro.
Flwwwww
Andrew, existe um erro em seu código SQL…
[color=red]“SELECT SUM(Totalp) as Totalp FROM registro”[/color]…
Para entender onde está o erro, complemento que a leitura do código seria essa:
Selecione a soma da coluna Totalp e chame o campo resultado dessa soma de TotalpSoma da tabela de Registros…
Sendo assim seu código SQL deve ficar assim:
[color=blue]“SELECT SUM(Totalp) as TotalpSoma FROM registro”[/color]…
E dentro do loop while, ao invés de pegar o campo Totalp, você pega o campo resultado [color=blue]TotalpSoma[/color], assim:
while (rs.next()) {
l=rs.getDouble("TotalpSoma");
}
Entendeu?
Quanto à especulação se esta é a melhor forma rodando em servidor ou em máquina local, digo que não é mania de DBA e sim prática de profissional.
Um Arquiteto de Software é obrigado a se inteirar das melhores práticas de todo o conjunto de tecnologias utilizadas no desenvolvimento de um projeto de software; saber as melhores soluções para o nível de aplicação bem como em banco de dados, etc. Pense sempre que nenhum sistema deve ser feito restringido a um computador local na era da informação.
Um abraço!
[quote=Linkel]
Entendeu?
Quanto à especulação se esta é a melhor forma rodando em servidor ou em máquina local, digo que não é mania de DBA e sim prática de profissional.
Um Arquiteto de Software é obrigado a se inteirar das melhores práticas de todo o conjunto de tecnologias utilizadas no desenvolvimento de um projeto de software; saber as melhores soluções para o nível de aplicação bem como em banco de dados, etc. Pense sempre que nenhum sistema deve ser feito restringido a um computador local na era da informação.
Um abraço![/quote]
oh! amigão! desculpa aí a demora pra responder, foi por que eu estou com a carga super lotada.
Eu concordo totalmente com você.
Graça a você e com colaboração de todos consegui fazer isso pelo modo sql.
Muito obrigado.
Continue assim.
abraços
Heheheheheh…
Fico feliz por tê-lo ajudado…
Obrigado pela cordialidade.
Estamos por aí!
Um abraço!