DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
luiz augusto dos santos lopes
 


País: Brasil
Estado: DF
Cidade: Brasilia
Mensagens: 43
 Postado em: 17/11/2011 11:06:59 PM

não sei se alguem aqui na area de java poderá me responder ou
tenho que ir na area de banco de dados
e por que eu tenho minha classe clienteDao e estou fazendo o insert em tres tabelas al mesmo tempo
estou utilizando o LAST_INSERT_ID esta cadastrando o cliente normalmente mas ,quando eu cadastro o
cliente as fk da tabela que esta relacionada retorna zero.
todas as vezes que eu cadastro um novo cliente a fk retorna zero.

queria saber se tem uma forma correta de implementar isso na minha classe CliienteDAO para que a minha
fk não retorne zero.

esse e o trecho da minha ClienteDAO:

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,?,?,?,?,?,?,?,?,?,?));


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();
}
} 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();
}
}

aonde tem o metodo LAST_INSERT-ID(),e retornado zero .

att

Luiz augusto
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 18/11/2011 01:23:08 PM

será q não está dando 0 pq n tem ainda nenhum lá?
Att Davi
luiz augusto dos santos lopes
 


País: Brasil
Estado: DF
Cidade: Brasilia
Mensagens: 43
 Postado em: 18/11/2011 01:48:13 PM

Não eu ja cadastrei varios clientes mas toda vez que eu
cadastro um novo cliente, a chave estrangeira das tabelas
endereço e clientes semprem retornam zero ,não tem um outro
metodo na classe de conexão que retorne o valor correto
da fk ?
DYEGO SOUZA DO CARMO
 

 


País: Brasil
Estado: PR
Cidade: xxxxx
Mensagens: 1836
 Postado em: 18/11/2011 03:24:22 PM

voce terá que executar uma query utilizando o MESMO STATEMENT...

st.createQuery(SELECT LAST_INSERT_ID());

abra ela e o id vai estar no campo que retorna...


mas voce PRECISA fazer isto dentro do MESMO STATEMENT que vc deu o insert, senao vem zerado.
luiz augusto dos santos lopes
 


País: Brasil
Estado: DF
Cidade: Brasilia
Mensagens: 43
 Postado em: 18/11/2011 04:02:23 PM

Não entendi muito o que vc quiz dizer ?
ROBSON PASSARELLA TEIXEIRA
 

 


País: Brasil
Estado: DF
Cidade: taguatinga
Mensagens: 518
 Postado em: 19/11/2011 06:08:42 PM

ele quis dizer pra vc testar usando o Statement invez de vc usar o metodo prepareStatement que retornar o Objeto do Tipo PrepareStatement usar o que retorna um objeto Statement somente ok???

att
robson
luiz augusto dos santos lopes
 


País: Brasil
Estado: DF
Cidade: Brasilia
Mensagens: 43
 Postado em: 20/11/2011 09:38:23 PM

tem como vc colocar um exemplo pra mim estou tentando fazer da forma com que vc falou
mais ta dando erro...



att

Luiz augusto...
luiz augusto dos santos lopes
 


País: Brasil
Estado: DF
Cidade: Brasilia
Mensagens: 43
 Postado em: 22/11/2011 02:41:51 PM

Mais alguém pode me ajudar não consegui resolver o meu problema que postei acima...


att


Luiz augusto
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03