Problema UPDATE SET

Bom dia, Olá tudo bem? como disse estou voltando a programar… e preciso de mais uma vez de uma ajuda… estou tentando atualizar um registro não estou conseguindo achar o erro… quando mando atualiza algum registro o que acontece é todos os campos são atualizados na base de dados são atualizados…

public class AtualizarAbastecimentoDAO {

public boolean Atualizar (Abastecimento objabastecimento) throws SQLException
{
    BdConexaoDAO conexao = new BdConexaoDAO();

    PreparedStatement pstmt =
    conexao.getConexao().prepareStatement
    ("UPDATE TB_ABASTECIMENTO SET Categoria =?, Valor_Litro=?, Valor_Gasto=?, Data=?, Observacao=?");
           

   pstmt.setString(1,objabastecimento.getCategoria_abastecimento());
   pstmt.setString(2,objabastecimento.getValorLitro_abastecimento());
   pstmt.setString(3,objabastecimento.getValorGasto_abastecimento());
   pstmt.setString(4,objabastecimento.getData_abastecimento());
   pstmt.setString(5,objabastecimento.getObservacao_abastecimento());
  
    int registros = pstmt.executeUpdate();
    pstmt.close();// fecha a conexao
    if (registros == 1){
        return true; }
    else {
        return false; 
    }
}

}

private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

    boolean tudoOk;
    tudoOk = ValidaCampos();
    
     String DataCadastro =new SimpleDateFormat
      ("dd/MM/yyyy").format (txtData.getDate()); 

  if (!tudoOk == true)
  
  {

        objabaAbastecimento = new Abastecimento();

        objabaAbastecimento.setCategoria_abastecimento((String)JComboBoxCategoria.getSelectedItem());
        objabaAbastecimento.setValorLitro_abastecimento(txtValorLitro.getText());
        objabaAbastecimento.setValorGasto_abastecimento(txtValorGasto.getText());
        objabaAbastecimento.setData_abastecimento(DataCadastro);
        objabaAbastecimento.setObservacao_abastecimento(txtObservacao.getText());

        DAOATUAL = new AtualizarAbastecimentoDAO();
        try {
            if(DAOATUAL.Atualizar(objabaAbastecimento)){
                JOptionPane.showMessageDialog(this,"Registro Atualizado com sucesso!");
             
            }

            // TODO add your handling code here:
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
       // Desabilita_Campo();
       btnNovo.setEnabled(true);          
       btnGravar.setEnabled(false);

   }
    
    
    
}

O problema é que está executando um UPDATE sem usar alguma condição na cláusula WHERE, com isso, todos os registros realmente serão afetados. Vc deve informar qual registro quer atualizar:

UPDATE TB_ABASTECIMENTO
SET Categoria = ?, Valor_Litro= ?, Valor_Gasto= ?, Data= ?, Observacao= ?
WHERE id = ? -- aqui será o ID do registro que será atualizado
1 curtida

O primeiro UPDATE sem WHERE a gente nunca esquece! :joy:

3 curtidas

Opa amigão blz entendi só que agora não está atualizando nada…

kkkk muito tempo parado…

Vc deve informar um ID válido no where para poder atualizar somente o registro referente à ele.

o primeiro de muitos kkkkkkk