Busca no banco de dados

4 respostas
L

Boa tarde, tenho o seguinte código:

public void consultaproduto() {
    String sql = "Select * from estoque where id=?";

    try {
        double soma = 0;
        for (int i = 0; i < jTable1.getRowCount(); i++) {
            Double valorAux = (Double) jTable1.getValueAt(i, 2);
            soma += valorAux.doubleValue();
        }
       pst = conexao.prepareStatement(sql);
        pst.setString(1, campoid.getText());
        rs = pst.executeQuery();
       double getString = Double.parseDouble(rs.getString(2)); 
        if (getString < soma) {
        JOptionPane.showMessageDialog(null,"Não temos esta quantidade em estoque, a quantidade do produto é: "+getString,"Atenção!",JOptionPane.WARNING_MESSAGE);
        } else {
        adiciona();
       }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

O propósito é o seguinte, eu quero que o programa veja todos os dados da coluna “quantidade(2)” e veja se na soma de tudo bate um valor maior q a quantidade que tem no banco de dados. Por exemplo: existem 10 mil películas de vidro, se eu adicionar 10 mil e 1 ele dá erro. Alguém me ajuda com o código? Está resultando no seguinte erro: " Before start of result set

4 Respostas

juliofsn

Não entendi bem o que você quer fazer nesse código, mas o erro que está acontecendo é pq para ler os valores de um resultset, você precisa chamar o método next antes de cada registro, até não haver mais registros:

rs = pst.executeQuery();
while(rs.next()){ // esse bloco where vai ser executado para cada registro no banco
double getString = Double.parseDouble(rs.getString(2)); // esse registro é mesmo uma string? pq vc não lê já como double?
//resto do seu código
} // fim do where
L

Agora o método está assim:

public void consultaproduto() {
    String sql = "Select * from estoque where id=?";

    try {
        double soma = 0;
        for (int i = 0; i < jTable1.getRowCount(); i++) {
            Double valorAux = (Double) jTable1.getValueAt(i, 2);
            soma += valorAux.doubleValue();
        }
       pst = conexao.prepareStatement(sql);
        pst.setString(1, campoid.getText());
        rs = pst.executeQuery();
        
        while(rs.next()){
       double getString = Double.parseDouble(rs.getString(3)); 
        if (getString < soma) {
        JOptionPane.showMessageDialog(null,"Não temos esta quantidade em estoque, a quantidade do produto é: "+getString,"Atenção!",JOptionPane.WARNING_MESSAGE);
        } else {
        adiciona();
        }
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

O que eu quero saber é o seguinte: se o valor da coluna 2 na tabela é maior do que eu tenho na coluna “qtd” da minha tabela no banco de dados.

L

alguem ajuda?

L

não funcionou mas obg

Criado 30 de maio de 2019
Ultima resposta 31 de mai. de 2019
Respostas 4
Participantes 2