retornar a fk do relacionamento e salvar no banco

25/11/2011

0

Ola tenho no meu cadastro três um insert em três tabelas e preciso retornar a fk do relacionamento e salvar no banco
eu tenho um trecho do meu codigo onde eu consigo retornar o ultimo id gerado no banco mais eu quero saber como e que
pego esse valor e jogo ele para o outro insert que esse id esta como chave estrangeira

exemplo tenho uma tabela pessoa que tem a pk pess_codigo
e clientes que tem pk cli_codigo e recebe pess_codigo como fk como eu faço para pegar essa fk de pessoa para salvar na tabela clientes na hora do insert ?

 public void cadastrarCliente(Cliente cliente) {
        try {
            pstm = bd.conectar().prepareStatement(select * from pessoa where pess_nome like ?);
            pstm.setString(1, cliente.getNome());
            rs = pstm.executeQuery();
            if(rs.next()){
                JOptionPane.showMessageDialog(null, já existe um cliente cadastrado com este nome !);
                   
             }else{
              pstm = bd.conectar().prepareStatement(insert into pessoa values(null,?,?,?,?,?,?,?,?,?,?),Statement.RETURN_GENERATED_KEYS);     
            
            
            pstm.setString(1, cliente.getNome());
            pstm.setString(2, cliente.getSexo());
            pstm.setString(3, cliente.getIdade());
            pstm.setString(4, cliente.getEmail());
            pstm.setString(5, cliente.getDatanasc());
            pstm.setString(6, cliente.getEstadocivil());
            pstm.setString(7, cliente.getCpf());
            pstm.setString(8, cliente.getRg());
            pstm.setString(9, cliente.getTelefonefixo());
            pstm.setString(10, cliente.getCelular());
    
            pstm.executeUpdate();
            
            
  
            ResultSet rs = pstm.getGeneratedKeys();    
            id = -1;    
            if(rs.next()){    
            id = rs.getInt(1); //considerando que há apenas um auto_increment na tabela   
            System.out.println(id); //aqui nesse trecho eu consigo imprimir o id da tabela pessoa ,mais quero gravar esse id como fk na tabela clientes. 
            } 
            
            
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
        try{
            
            pstm = bd.conectar().prepareStatement(insert into endereco values(null,LAST_INSERT_ID(),LAST_INSERT_ID(),?,?,?,?,?));
           
            
             pstm.setString(1, cliente.getEndereco());
             pstm.setString(2, cliente.getCidade());
             pstm.setString(3, cliente.getBairro());
             pstm.setString(4, cliente.getCep());
             pstm.setString(5, cliente.getUf());
             
             pstm.executeUpdate();
            
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
       
        try{
               pstm = bd.conectar().prepareStatement(insert into clientes values(null,LAST_INSERT_ID()));
              
              
           
               
       
               

              
              
            
            pstm.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
    }


att

luis
Luiz Lopes

Luiz Lopes

Responder

Posts

25/11/2011

Luiz Lopes

Ola tenho no meu cadastro três um insert em três tabelas e preciso retornar a fk do relacionamento e salvar no banco
eu tenho um trecho do meu codigo onde eu consigo retornar o ultimo id gerado no banco mais eu quero saber como e que
pego esse valor e jogo ele para o outro insert que esse id esta como chave estrangeira

exemplo tenho uma tabela pessoa que tem a pk pess_codigo
e clientes que tem pk cli_codigo e recebe pess_codigo como fk como eu faço para pegar essa fk de pessoa para salvar na tabela clientes e na tabela endereco na hora do insert ?

 public void cadastrarCliente(Cliente cliente) {
        try {
            pstm = bd.conectar().prepareStatement(select * from pessoa where pess_nome like ?);
            pstm.setString(1, cliente.getNome());
            rs = pstm.executeQuery();
            if(rs.next()){
                JOptionPane.showMessageDialog(null, já existe um cliente cadastrado com este nome !);
                   
             }else{
              pstm = bd.conectar().prepareStatement(insert into pessoa values(null,?,?,?,?,?,?,?,?,?,?),Statement.RETURN_GENERATED_KEYS);     
            
            
            pstm.setString(1, cliente.getNome());
            pstm.setString(2, cliente.getSexo());
            pstm.setString(3, cliente.getIdade());
            pstm.setString(4, cliente.getEmail());
            pstm.setString(5, cliente.getDatanasc());
            pstm.setString(6, cliente.getEstadocivil());
            pstm.setString(7, cliente.getCpf());
            pstm.setString(8, cliente.getRg());
            pstm.setString(9, cliente.getTelefonefixo());
            pstm.setString(10, cliente.getCelular());
    
            pstm.executeUpdate();
            
            
  
            ResultSet rs = pstm.getGeneratedKeys();    
            id = -1;    
            if(rs.next()){    
            id = rs.getInt(1); //considerando que há apenas um auto_increment na tabela   
            System.out.println(id); //aqui nesse trecho eu consigo imprimir o id da tabela pessoa ,mais quero gravar esse id como fk na tabela clientes. 
            } 
            
            
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
        try{
            
            pstm = bd.conectar().prepareStatement(insert into endereco values(null,LAST_INSERT_ID(),LAST_INSERT_ID(),?,?,?,?,?));
           
            
             pstm.setString(1, cliente.getEndereco());
             pstm.setString(2, cliente.getCidade());
             pstm.setString(3, cliente.getBairro());
             pstm.setString(4, cliente.getCep());
             pstm.setString(5, cliente.getUf());
             
             pstm.executeUpdate();
            
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
       
        try{
               pstm = bd.conectar().prepareStatement(insert into clientes values(null,LAST_INSERT_ID()));
              
              
           
               
       
               

              
              
            
            pstm.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            bd.desconectar();
        }
    }


att

luis
Responder

25/11/2011

Luiz Lopes

[resolvido] ja consegui resolver meu problema
Responder

25/11/2011

Davi Costa

Show de bola Luis!
Assim que possível, favor fechar chamado.

att Davi
Responder

25/11/2011

Luiz Lopes

eu sou novo no forum não sei como fecha um chamado pode me ensinar como fecho por favor...
Responder

25/11/2011

Davi Costa

Se nã me engano tem uma opção no topo do chamado.

att Davi
Responder

06/12/2011

Dyego Carmo

Deu certo ?

Resolvido ?

Se sim , por favor poderia fechar o chamado ?

Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar