retornar a fk do relacionamento e salvar no banco
25/11/2011
0
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
Posts
25/11/2011
Luiz Lopes
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
25/11/2011
Davi Costa
Assim que possível, favor fechar chamado.
att Davi
25/11/2011
Luiz Lopes
25/11/2011
Davi Costa
att Davi
06/12/2011
Dyego Carmo
Resolvido ?
Se sim , por favor poderia fechar o chamado ?
Valeu !
Clique aqui para fazer login e interagir na Comunidade :)