Ir para conteúdo
Fórum CódigoFonte.net
DouglasCar

Problemas em inserir dados

Recommended Posts

Pessoal, estou tendo uma dificuldade em verificar em uma tabela se um determinado dado já foi inserido na mesma e caso ele já exista não permitir que o mesmo seja inserido novamente. Só para tentar exolicar melhor eu tenho três tabelas uma de contato onde tenho o (codcontato), a outra movcontato onde tenho o (idmovtocto) e a terceira tabela que é onde preciso inserir os dados que é a participantes onde tenho os campos (idparticipantes, idmovtocto, codcontato, codempresa). Acontece que preciso verificar se determinado contato já foi inserido nesta tabela para um movimento, ou seja ao inserir um registro na mesma, preciso verificar se o contato que estou inserindo já existe para aquele movimento, sendo que em caso afirmativo eu não permita a inserção e em caso negativo o mesmo seja inserido. Tenho o seguinte código para fazer a inclusão de participantes:

Conexao conexao = new Conexao();
    Connection conn = null;
    PreparedStatement pstmt = null;
    conn = conexao.getConnection();
    String SQL = "";

    Connection conn2 = null;
    PreparedStatement pstmt2 = null;
    conn2 = conexao.getConnection();
    String SQL2 = "";

    Connection conn3 = null;
    PreparedStatement pstmt3 = null;
    conn3 = conexao.getConnection();
    String SQL3 = "";

    String nomeusuario = "";
    nomeusuario = String.valueOf(session.getValue("nomeusuario"));
    String participantes[] = request.getParameterValues("participantes");
    String empresa = "";
    empresa = String.valueOf(session.getValue("empresa"));
    String movimento1 = request.getParameter("movimento");
    String codcontato1 = request.getParameter("codcontato");

    String nomeusuario1 = new String("");
    if (nomeusuario.equalsIgnoreCase("")){
        nomeusuario1 = "null"; 
    }
    else{
        nomeusuario1 =  nomeusuario;
    }

try {
        if (participantes != null){

            String participante1 = new String("");
            for ( int i = 0; i < participantes.length; i++ ){
                participante1 += participantes[i];
                String participante2 = participantes[i];

                SQL  = "Select codcontato from contato where codcontato = "+participante2;
                pstmt = conn.prepareStatement(SQL);
                ResultSet rs = pstmt.executeQuery();

                while(rs.next()){
                    String codcontato= rs.getString(1);

                    SQL2  = "Select max(idmovtocto) as movimento from movcontato";
                    pstmt2 = conn2.prepareStatement(SQL2);
                    ResultSet rs2 = pstmt2.executeQuery();

                    while (rs2.next()){
                        String movimento = rs2.getString(1);

                        SQL3  = "Insert into participantes(idmovtocto, codcontato, codempresa)" +
                                " values ('"+movimento1+"', '"+codcontato+"', '"+empresa+"')";
                        pstmt3 = conn3.prepareStatement(SQL3);
                        pstmt3.executeUpdate();
                   }
                }
            }
            %><br><br><br><br><br><br><br><br>
                <td align="center"><font size="4" color="#AA0000">Successfully registered participant</font></td>
                <script language="Javascript"><!--
                var timer = 2;
                function countdown(){
                    if(timer > 0){
                        timer -= 1;
                        setTimeout("countdown()",1000);
                    }
                    else{  
                        location.href='cadParticipante.jsp';
                        <%session.putValue("nomeusuario",nomeusuario);
                        %>
                    }
                }
                countdown();
                --></script>
                <%
        }
        else{
            %><br><br><br><br><br><br><br><br>
            <td align="center"><font size="4" color="#AA0000">You need to mark a contact</font></td>                        
            <script language="Javascript"><!--
            var timer = 2;
            function countdown(){
                if(timer > 0){
                    timer -= 1;
                    setTimeout("countdown()",1000);
                }
                else{  
                    location.href='selecParticipantes.jsp';
                    <%session.putValue("nomeusuario",nomeusuario);
                    %>
                }
            }
            countdown();
            --></script>
            <%
        }
} catch (Exception e) {
    //out.println("Não foi possível conectar ao banco" + e.getMessage());
}
finally{
    try{
        pstmt.close();
        conn.close();
        pstmt2.close();
        conn2.close();
        pstmt3.close();
        conn3.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}

Já tentei colocar um Select antes para verificar se o codigo do contato da tabela contato e o id do movimento da tabela movcontato são iguais ao codigo do contato e ao id do movimento da tabela participantes, mas não obtive o resultado esperado. Gostaria de que se possível alguém pudesse me dar uma ajuda, seja com dicas ou exemplos de código em jsp que façam este tratamento, pois preciso impedir a inserção de contatos repetidos em um mesmo movimento da tabela de participantes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema setando os campos codcontato e idmovtocto como chaves primárias e tirando a chave primária do campo idparticipantes da tabela participantes. Estou com outro problema, tenho o seguinte código para inserir dados:

 
if (!("".equals(nome))){
                 SQL  = "Insert into empresa(codgrupo,codpais, nome, expectativa, limite, risco," +
                         " garantia) values ('"+grupo+"', '"+pais+"', '"+nome+"', "+expectativa4+"," +
                         " "+limite4+", "+risco4+", "+garantia1+" )";
                 pstmt = conn.prepareStatement(SQL);
                 pstmt.executeUpdate();

                 %>
                     <td align="center"><font size="4" color="#AA0000">Successfully registered company</font></td>
                     <script language="Javascript"><!--
                     var timer = 2;
                     function countdown(){
                         if(timer > 0){
                             timer -= 1;
                             setTimeout("countdown()",1000);
                         }
                         else{  
                             location.href='listagem.jsp';
                             <%session.putValue("nomeusuario",nomeusuario);
                             %>
                         }
                     }
                     countdown();
                     --></script>           
                     <%
             }
             else{
                 %>
                 <td align="center"><font size="4" color="#AA0000">Don't exist data to be registered</font></td>                        
                 <script language="Javascript"><!--
                 var timer = 2;
                 function countdown(){
                     if(timer > 0){
                         timer -= 1;
                         setTimeout("countdown()",1000);
                     }
                     else{  
                         location.href='cadEmpresa.jsp';
                         <%session.putValue("nomeusuario",nomeusuario);
                         %>
                     }
                 }
                 countdown();
                 --></script>
                 <%
             }
 } catch (Exception e) {
     //out.println("Não foi possível conectar ao banco" + e.getMessage());
 }
 finally{
     try{
         pstmt.close();
         conn.close();
     }catch (Exception e){
         e.printStackTrace();
     }
 }

Acontece que desta maneira quando o usuário utilizar os botões de Avançar e Voltar do Navegador ele consegue gravar várias vezes o mesmo registro. Gostaria de que se possível alguém me ajudasse com uma dica ou exemplo de como resolver este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...