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

Método está inserindo registros repetidos no banco, mesmo com Verificação...

Bom dia galera ! Estou fazendo uma verificação na minha aplicação para evitar a inserção de registros repetidos no banco de dados. A lógica é a seguinte: faço uma consulta no banco de dados comparando os dados (data e hora) obtido de um arquivo de texto, com os respectivos campo na tabela do banco de dados. Se os dados do arquivo baterem com os mesmos valores dos campos da tabela, esses dados serão ignorados e não serão adicionados ao banco. O problema se dar porque a consulta esta retornando vazia, quando na verdade ha vários registros com esses campos repetidos. Já executei o sql direto no banco e funciona normalmente, mas na minha aplicação nada! OBS: a tabela pode ter registros com os campos data e hora repetidos, não pode ter é registro com a COMBINAÇÃO desses dois campos repetidos, pois não existe duas horas iguais para uma mesma data. Segue abaixo os códigos. De já agradeço!

Trecho de codigo da verificação

// Verifica se a lista esta vazia                                
                if(dao.verificaRegistroExistente().isEmpty()){
                    dao.adiciona(registro);
                    System.out.println("Gravado!");                     
                }else{                    
                    System.out.println("Registro já existente no Banco!");
                }

Metodo "verificaRegistroExistente()"

public List<RegistroClimaBean> verificaRegistroExistente() {
        String sql = "SELECT data, hora FROM registro_clima WHERE data = ? AND hora = ?";
        List<RegistroClimaBean> registros = new ArrayList<RegistroClimaBean>();
        // criando o objeto registro
        RegistroClimaBean registro = new RegistroClimaBean();
        try {
            // prepared statement para inserção
            PreparedStatement stmt = connection.prepareStatement(sql);

            // seta os valores
            stmt.setDate(1, registro.getData());
            stmt.setTime(2, registro.getHora());

            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                registro.setData(rs.getDate("data"));
                registro.setHora(rs.getTime("hora"));
                // adicionando o objeto a lista
                registros.add(registro);
            }
            rs.close();
            stmt.close();
            return registros;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
  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!

3 respostas

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