Java excluindo e alterando dados que não existem no banco

Boa tarde!
Estou fazendo um programa de inserir, alterar e excluir dados num banco de dados usando Java, porém quando eu vou fazer o teste para excluir e alterar o dado do banco, quando o dado não existe ele aparece uma mensagem que o dado foi excluido/alterado com sucesso mas neste caso deveria dar erro pois o dado simplesmente não existe, dados que constam no banco ele exclui/altera normalmente.

segue código
EXCLUIR

public String excluiCliente(Cliente cliente) {
        String resultado = "";
        try {
            Connection con = Conecta.getConexao();
            String sql = "DELETE FROM dados WHERE codigo=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setInt(1, cliente.getCodigo());

            ps.execute();

            ps.close();
            con.close();

            resultado = "OK";
        } catch (Exception e) {
            resultado = "ERRO: " + e.toString();
        }
        return resultado;
    }

ALTERAR

public String alteraCliente(Cliente cliente) {
        String resultado = "";
        try {
            Connection con = Conecta.getConexao();
            String sql = "UPDATE dados SET descricao =? WHERE codigo=?";
            PreparedStatement ps = con.prepareStatement(sql);

            ps.setInt(1, cliente.getCodigo());
            ps.setString(2, cliente.getDescricao());
            ps.execute();
            ps.close();
            con.close();

            resultado = "OK";
        } catch (Exception e) {
            resultado = "ERRO: " + e.toString();
        }
        return resultado;
    }

Agradeço a atenção :slight_smile:

ps.executeUpdate();

Continua com o mesmo problema :frowning:

Isso acontece porque provavelmente a sua mensagem de confirmação de alteração/exclusão está dentro da sua view, e não em um controller.
Posta o código da sua view aí que fica mais fácil pra te dar uma resposta que te ajude a resolver o problema.

ALTERAR

private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        ClienteDao alteraCliente = new ClienteDao();
        String resul = alteraCliente.alteraCliente(montaCliente());
        if(resul.equals("OK")){
            lblMensagem.setText("ALTERADO COM SUCESSO");
        }else{
            lblMensagem.setText("ERRO");
        }
    }    

EXCLUIR

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

        ClienteDao excluiCliente = new ClienteDao();
        String resultado = excluiCliente.excluiCliente(montaCliente());
        if (resultado.equals("OK")) {
            lblMensagem.setText("EXCLUÍDO");
        } else {
            lblMensagem.setText("ERRO");
        }
    }

Caramba, :confused:
Você já fez debug no código pra ver passo a passo o que está ocorrendo ?
Eu aconselharia ao invés dos seus métodos retornarem String, retornar um booleano!

1 curtida

Fiz e ele sempre cai no “OK”, ele até exclui e altera, porém da que exclui e altera mesmo não excluindo ou alterando nada, rs.
Acho engraçado que o meu incluir da erro quando não inclui :confused:

Mas muito obrigada pela ajuda :smiley:

Olá amiga,te aconselho a colocar seus métodos para retornarem um boolean.

1 curtida

sou amiga poxa! rsrsrs. Vou testar e caso de certo coloco aqui :smiley:

Desculpe, vou me retratar, Olá amiga :slight_smile:
Quanto ao seu problema como disse tente implementar seus métodos retornando boolean e observei que quando você passa a string de updade você seta ela ao contrario

   String sql = "UPDATE dados SET descricao =? WHERE codigo=?";

        PreparedStatement ps = con.prepareStatement(sql);
        ps.setString(1, cliente.getDescricao());    
        ps.setInt(2, cliente.getCodigo());

Você seta primeiro a descrição e depois o código seguindo a orden da string.
Qualquer duvida post aqui novamente.

O método executeUpdate ao realizar uma exclusão, vai retornar o total de registros manipulados, ou seja, excluídos. Em vez de dá erro devido ao fato de não existir o registro no banco, o método irá retornar 0 (zero).

Acredito que você deva ajustar sua lógica.