java conexão com banco de dados
17/11/2011
0
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
Luiz Lopes
Posts
18/11/2011
Davi Costa
Att Davi
18/11/2011
Luiz Lopes
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 ?
18/11/2011
Dyego Carmo
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.
19/11/2011
Robson Teixeira
att
robson
20/11/2011
Luiz Lopes
mais ta dando erro...
att
Luiz augusto...
22/11/2011
Luiz Lopes
att
Luiz augusto
Clique aqui para fazer login e interagir na Comunidade :)