I'm experiencing some problems with inserting data into my Customers table. Specifically with foreign keys fk_telefone_fisico
and fk_telefone_juridico
.
When I register the user and it gives me a NullPointerException
, but I do not know where this error comes from, since I can not identify the null pointer. Follow the DAO Code:
public void Salvar (ClienteFisico cf, TelefoneFisico t, EnderecoFisico end) throws Exception{
PreparedStatement ps = null;
PreparedStatement ps2 = null;
PreparedStatement ps3 = null;
if (cf == null)
{
throw new Exception("Erro: Cliente não pode ser nulo!");
}
try {
String sql2 ="insert into tbl_telefone_fisico (telefone_fixo_fisico, celular1_fisico, celular2_fisico, flag_ativo) values (?,?,?,1)";
ps2 = this.con.prepareStatement(sql2, ps2.RETURN_GENERATED_KEYS);
String sql3 = "insert into tbl_endereco_fisico (cidade_fisico, cep_fisico, estado_fisico, bairro_fisico, rua_fisico, numero_fisico, flag_ativo) values (?,?,?,?,?,?,1)";
ps3 = this.con.prepareStatement(sql3, ps3.RETURN_GENERATED_KEYS);
String sql = "insert into tbl_clientefisico(nome_cliente, sobrenome_cliente, cpf, rg, email,fk_telefone_fisico, fk_endereco_fisico, flag_ativo) values (?,?,?,?,?,?,?,1)";
ps = this.con.prepareStatement(sql, ps.RETURN_GENERATED_KEYS);
ps2.setString(1, t.getTelefoneFixo());
ps2.setString(2, t.getCelular1());
ps2.setString(3, t.getCelular2());
ResultSet rs2 = ps2.getGeneratedKeys();
while(rs2.next()){
int idTelGerado = rs2.getInt(1);
t.setIdTelefone(idTelGerado);
}
ps3.setString(1, end.getCidade());
ps3.setString(2, end.getCep());
ps3.setString(3, end.getEstado());
ps3.setString(4, end.getBairro());
ps3.setString(5, end.getRua());
ps3.setString(6, end.getNumero());
ResultSet rs3 = ps3.getGeneratedKeys();
while(rs3.next()){
int idEndGerado = rs3.getInt(1);
end.setIdEndereco(idEndGerado);
}
ps.setString(1, cf.getSobrenomeCliente());
ps.setString(2, cf.getCpfCliente());
ps.setString(3, cf.getRgCliente());
ps.setString(4, cf.getEmailCliente());
ps.setInt(5, cf.getTelefoneCliente().getIdTelefone());
ps.setInt(6, cf.getEndereçoCliente().getIdEndereco());
ResultSet rs = ps.getGeneratedKeys();
while (rs.next()){
int idPessoaGerado = rs.getInt(1);
cf.setIdCliente(idPessoaGerado);
}
ps2.executeUpdate();
ps3.executeUpdate();
ps.executeUpdate();
ps2.close();
ps3.close();
ps.close();
} catch (Exception e) {
throw new Exception("Erro ao inserir os dados: " + e.toString());
}
finally{
ConnectionFactory.CloseConnection(con, ps);
}
As you can see, it seems all right, but when I click on register (JButton) it gives me a NullPointer. Here is the code for the Register Button:
BotaoCadastrar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(ClienteFisico == true)
{
EnderecoFisico end = new EnderecoFisico();
TelefoneFisico tel = new TelefoneFisico();
ClienteFisico cf = new ClienteFisico();
tel.setCelular1(TxtCelular1.getText());
tel.setCelular2(TxtCelular2.getText());
end.setCidade(TxtCidadeCliente.getText());
end.setCep(TxtCepCliente.getText());
end.setBairro(TxtBairroCliente.getText());
end.setEstado(TxtEstadoCliente.getText());
end.setRua(TxtClientesRua.getText());
end.setNumero(TxtNumCliente.getText());
cf.setNomeCliente(TxtNomeCliente.getText());
cf.setSobrenomeCliente(TxtSobreomeCliente.getText());
cf.setCpfCliente(TxtCpfCnpjCliente.getText());
cf.setRgCliente(TxtRgIeCliente.getText());
cf.setEmailCliente(TxtEmailCliente.getText());
tel.setTelefoneFixo(TxtTelFixo.getText());
try{
if(cfcont.Cadastrar(cf,tel,end))
{
JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!", "FUNCIONOU!", JOptionPane.OK_OPTION);
}
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, "Erro ao cadastrar o Cliente " + ex.toString(), "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
else if (ClienteFisico == false)
{
JOptionPane.showMessageDialog(null, "Ainda não é possível cadastar cliente Jurídico", "Ops!", JOptionPane.ERROR_MESSAGE);
}
}
});