Função verifica dados iguais

3 respostas
Marcio_Tostes

Prezados, bom dia.

Sou novo em programação, e quero uma ajuda de vocês para analisar uma função que criei, uma função para verificar dados iguais, e não deixar fazer a inserção desses dados. Tenho um box carregado com países, e uma jTable que é carregada com os estados de acordo com o país selecionada no box, porém se o pais BRASIL existe o estado A, com a uf A e se for cadastrar A e uf A para outro pais a função esta bloqueando o cadastro, segue meu código:

public boolean verificaDadosIguais(String N, String U, int codPais){

boolean dadosIguais = false;
    
    String nomeBanco = "";
    String ufBanco = "";
    int idPaisBanco = 0;

    try
    {
        Connection con = Conexao.getConnetion();
        Statement stmt;
        ResultSet rs;

        String sql = "SELECT * FROM estado;";
        stmt = con.createStatement();
        rs   = stmt.executeQuery(sql);
        
        if(qtdLinhasTabela>=1)
        {
            rs.first();
            nomeBanco = rs.getString("nome");
            ufBanco = rs.getString("uf");
            idPaisBanco = rs.getInt("paisIdPais");
        }

        if(nomeBanco.equals(N) && ufBanco.equals(U) && (codPais==idPaisBanco))
        {
            JOptionPane.showMessageDialog(null, "OS DADOS QUE VOCÊ ESTÁ TENTANDO INSERIR "
                                              + "JÁ SÃO EXISTENTES NO BANCO.", "DUPLICIDADE DE DADOS", JOptionPane.WARNING_MESSAGE);

            dadosIguais = true;
            rs.close();
        }
        else
        {
           while(rs.next())
           {
               if(N.equals(rs.getString("nome")) && U.equals(rs.getString("uf")) && (idPaisBanco == codPais))
               {
                   JOptionPane.showMessageDialog(null, "OS DADOS QUE VOCÊ ESTÁ TENTANDO INSERIR "
                                              + "JÁ SÃO EXISTENTES NO BANCO.", "DUPLICIDADE DE DADOS", JOptionPane.WARNING_MESSAGE);

                   dadosIguais = true;
                   break;
               }
           }   
        }
    }   
    catch (SQLException ErroSql)
    {
        JOptionPane.showMessageDialog(null, "ERRO NA FUNÇÃO verificaDadosIguais();", 
                                    "ERRO DE SISTEMA.", JOptionPane.ERROR_MESSAGE);
    }

    return dadosIguais;
}

3 Respostas

B

pq invés de vc criar uma função pra isso, vc num cria uma chave unica na tabela no banco, pense nisso…

Marcio_Tostes

Desculpe, mais como assim, chave única? não sei muito sobre banco de dados…

Marcio_Tostes

Estava lendo aqui, no bd que eu utilizo, workbench habilita para um dos atributos da tabela a função unique, e realmente faz o que você falou, muito obrigado.

Criado 26 de junho de 2017
Ultima resposta 26 de jun. de 2017
Respostas 3
Participantes 2