retornar a fk do relacionamento e salvar no banco
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 ?
att
luis
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
Curtidas 0
Respostas
Luiz Lopes
25/11/2011
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 ?
att
luis
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
GOSTEI 0
Luiz Lopes
25/11/2011
[resolvido] ja consegui resolver meu problema
GOSTEI 0
Davi Costa
25/11/2011
Show de bola Luis!
Assim que possível, favor fechar chamado.
att Davi
Assim que possível, favor fechar chamado.
att Davi
GOSTEI 0
Luiz Lopes
25/11/2011
eu sou novo no forum não sei como fecha um chamado pode me ensinar como fecho por favor...
GOSTEI 0
Davi Costa
25/11/2011
Se nã me engano tem uma opção no topo do chamado.
att Davi
att Davi
GOSTEI 0
Dyego Carmo
25/11/2011
Deu certo ?
Resolvido ?
Se sim , por favor poderia fechar o chamado ?
Valeu !
Resolvido ?
Se sim , por favor poderia fechar o chamado ?
Valeu !
GOSTEI 0