Percorrer banco de dados

3 respostas
Giovanni_Chrispin

Boa tarde, tenho uma tabela chamada despesabase com os seguintes campos: id_despesabase data_despesa, id_base, id_fornecedor, valor_despesa, numeronota, desconto, tipo_pagamento

preciso percorrer minha tabela e comparar com o campo onde digito o numero da nota para ver se ela já não foi lançada

3 Respostas

Allan_HB

Giovanni,

Acredito que a pergunta deveria estar na categoria de Banco de Dados, mas vamos lá.

  1. Antes de qualquer coisa é necessário levar em consideração o tamanho do sistema e a quantidade de registro que essa tabela vai receber, pois o Número da Nota pode se repetir, logo você pode ter 2 ou mais notas com o mesmo número, porém com itens diferentes. Sendo assim o correto é realizar a comparação pela chave de acesso da Nota.

  2. No seu cenário, para que obtenha o resultset esperado, basta fazer um select em todos os registros e filtrar pelo campo numeronota = valor digitado

Giovanni_Chrispin

eu estava pensando em criar uma condição comparando numero da nota, fornecedor e valor total pois no sistema nao posso ter notas com o msm itens e valores.
eu tentei utilizar os seguinte codigo:

try {

conecta.executaSQL(select * from despesabase inner join base on despesabase.id_base=base.id_base where nome_base = '” + jComboBox_base.getSelectedItem() + “’”);

conecta.rs.first();
if (conecta.rs.getInt("numeronota") == Integer.parseInt(jTextField_nNota.getText())) {
                JOptionPane.showMessageDialog(rootPane, "numero nota: " + conecta.rs.getInt("numeronota") + "base: " + conecta.rs.getString("nome_base"));

            } else {
                mod.setId_despesaBase(codDespesa);
                mod.setNumeroNota(Integer.parseInt(jTextField_nNota.getText()));
                mod.setNomeBase((String) jComboBox_base.getSelectedItem());
                mod.setNomeFornecedor(jTextField_fornecedores.getText());
                mod.setValorDespesa(Double.parseDouble(jLabel_total.getText()));
                mod.setDataDespesa(jFormattedTextField_data.getText());
                mod.setDesconto(Double.parseDouble(jTextField_desconto.getText()));
                mod.setPagamento((String) jComboBox1.getSelectedItem());
                control.fechaVenda(mod);
                ParcelaDespesa pd = new ParcelaDespesa(codDespesa);
                TelaPrincipal.desktopPane.add(pd);
                pd.setVisible(true);
                pd.setPosicao();
                dispose();
            }


    } catch (SQLException ex) {
        Logger.getLogger(DespesaBase.class.getName()).log(Level.SEVERE, null, ex);
    }

Porem o resultSet ele esta pegando a primeira posição do banco e verificando. e não estou conseguindo verificar os demais registros da tabela

C

Amigo se você quer ler os resultado do banco de dados você deve fazer igual o código abaixo que vai passar por todas as linhas da sua tabela.

while(conecta.rs.next()){

if(conecta.rs.getInt(“numeronota”) == Integer.parseInt(jTextField_nNota.getText()) )

//faz isso

}

else{

//faz isso

}

}

Agora uma forma melhor de fazer já é verificando se o registro existe na tabela como o @Allan_HB falou.

Criado 3 de maio de 2016
Ultima resposta 3 de mai. de 2016
Respostas 3
Participantes 3