Dúvida - Retornar dados do database em variável

4 respostas
Gabriel_Tom

Ae galera, estou começando na linguagem java e travei na questão de receber o valor de um dado do BD numa variável.
o sistema é o seguinte: o total a pagar por mês para aquela marca seja mostrado e que o valor total a pagar naquele mês tb.
tipo assim:
a pagar no mês de janeiro:
adidas R$1.600
nike R$ 2.000
total a pagar no mês de janeiro= R$ 3.600

quando o usuário clica no botao "atualizar", o sistema atualiza os dados antes de gerar o relatório.
alguém da uma ajuda ai ?
ai o codgo do botão "atualizar":

private void btnAtualizarActionPerformed(java.awt.event.ActionEvent evt) {                                             
       try{

        IniciarSistema.rs = IniciarSistema.comando.executeQuery
                            ("select * from Tabela1 where mes = '"+
                     txtMes.getText() + "'");

          while(IniciarSistema.rs.next()) {
            int mes = rs.getInt ("mes");
             double valorTotal = rs.getDouble ("valorTotal");
             valorTotalMes += valorTotal;
             System.out.print(mes);
             System.out.print("ok!!!");
          }
       } catch(SQLException e) {
          JOptionPane.showMessageDialog(this,"Erro");
        }
    
    }

desculpa ai qualquer coisa, abraços !!!

4 Respostas

M

Sei que daria trabalho fazer isso, mas seu código precisa ser reorganizado, seguindo padrões para evitar confusão. Por exemplo, no seu caso um DAO deveria ser usado para resgatar dados do banco e colocá-los lá. E, de quebra, um PreparedStatement deve ser sempre usado ao se fazer persistência dessa forma.

De qualquer maneira, algum erro é lançado? Até onde o programa vai? (ele mostra os System.out.print() de cada mês?).

Gabriel_Tom

Opa, obrigado por responder.

gostaria de saber qual o padrão, pois aprendi desse jeito . =[

No caso quando eu clico no botão “atualizar” aparece “erro”.

Gostaria de algumas dicas já que estou aprendendo do jeito errado.

Obrigado.

M

Algumas dicas são:

  1. Quando se trabalha com BD a persistência (inserção/recuperação de dados) deve ser delegada a uma classe específica (pode ser um DAO, que vai ser o seu caso ou algum framework como o Hibernate).

  2. Sempre use PreparedStatement, se for usar um DAO.

Ou seja, procure sobre o design pattern DAO (na apostila FJ-21 da Caelum - disponível para download, é só procurar - fala sobre isso, explicando as boas práticas).

E, quanto ao erro, evite colocar apenas esse tipo de mensagem, pois - como se pode perceber - ela não ajuda a encontrar o problema. Deixe seu código dentro do bloco catch assim:

e.printStackTrace();
JOptionPane.showMessageDialog(this,"Erro: " + e);

Isso irá, além de mostrar um erro resumido no diálogo, mostrará o stack trace completo da exceção no console. Aí você pode postar esse stack trace para te ajudarmos, ok?

Gabriel_Tom

Po cara, tu me ajudou muito mesmo.
Agora é só estudar essa apostila da Caelum e mandar ver.
Pelo visto vou ter que estudar muuito, hehe.

Eu tava criando uma classe main chamada “IniciarSistema” e nela eu já fazia a conexão com o BD e não fechava a conexão.

Agora vou utilizar o PreparedStatement, pois estava utilizando o Statement, e tb vou criar uma classe “AcessoBD” e nela fazer a conexão. É isso mesmo ?

Acho que deu pra pegar um pouco.
Muito obrigado, abraços!

Criado 6 de janeiro de 2010
Ultima resposta 6 de jan. de 2010
Respostas 4
Participantes 2