1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Método "Remover", retorna sucesso, mesmo sem ter nada no Banco de Dados. Como tratar isso numa aplicação ?

Boa noite galera, estou com uma problema na minha aplicação que não estou conseguindo resolver. É o seguinte: Tenho dois métodos, "remove()" e "removeTudo()". O primeiro, recebe dois objetos do tipo "Date" como parâmetros e executa uma query SQL de exclusão no Banco de Dados para os dados que estão dentro do intervalo das datas. O segundo, não recebe parâmetros e simplesmente executa uma query SQL de exclusão no Banco de Dados. O problema de ambos, é que mesmo quando não é encontrado nenhum dado no banco, a query é executada e o programa mostra um mensagem de sucesso, mesmo sem ter excluído nada. Diante disso, como devo tratar esse problema ? Pois, se isso gerasse uma exceção, poderia tratar facilmente usando um "try-cach", mas como não gera, o que devo fazer ? Segue abaixo, o meu código pra vocês darem uma analisada:

Métodos da classe DAO

public void remove(Date dataInicial, Date dataFinal) {
        try {
            PreparedStatement stmt = connection.prepareStatement("DELETE FROM "
                    + "registro_clima WHERE data BETWEEN ? AND ?");

            stmt.setDate(1, dataInicial);
            stmt.setDate(2, dataFinal);

            stmt.execute();
            stmt.close();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void removeTudo() {
        try {
            PreparedStatement stmt = connection.prepareStatement("DELETE FROM registro_clima");          

            stmt.execute();
            stmt.close();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

Código chamado ao clicar no botão

private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (JTFDataInicial.getValue() == null) {
            JOptionPane.showMessageDialog(this, "Informe a Data Inicial");
            JTFDataInicial.requestFocus();
        } else if (JTFDataFinal.getValue() == null) {
            JOptionPane.showMessageDialog(this, "Informe a Data Final");
            JTFDataFinal.requestFocus();
        } else {            
            //Pegando a data informada nos campos de busca
            java.util.Date dataInicio = (java.util.Date) JTFDataInicial.getValue();
            java.util.Date dataFim = (java.util.Date) JTFDataFinal.getValue();
            dao.remove(java.sql.Date.valueOf(formatadorYMD.format(dataInicio)),
                    java.sql.Date.valueOf(formatadorYMD.format(dataFim)));

            System.out.println("Removido!");
            JOptionPane.showMessageDialog(this, "Dados Removido Com Sucesso !");
        }
    }                                         

    private void btExcluirTudoActionPerformed(java.awt.event.ActionEvent evt) {                                              
        dao.removeTudo();
        System.out.println("Removido!");
        JOptionPane.showMessageDialog(this, "Dados Removido Com Sucesso !");
    }
  • você precisa fazer um stmt.executeUpdate(); e pq vc está usando o stmt.close(); só com o sinal de chave "}" do try catch ele já fecha a conexão.

    blayd2015   22 de jan de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

4 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java dao banco-de-dados ou faça a sua própria pergunta.