AG2016
#1
Segue o código.
public void InserirPessoaFisica(PessoaFisica pf) throws SQLException {
String sql1= "INSERT INTO tblPessoa(IdPessoaTipo) VALUES (1);";
Connection conexao1 = (Connection) ConexaoFactory.Conection();
PreparedStatement comando1 = conexao1.prepareStatement(sql1);
comando1.executeUpdate();
ResultSet rs =comando1.getGeneratedKeys();
//long val = ((Number) rs.getObject(1)).intValue();
long id =0;
if (rs.next()) {
id =rs.getInt(1);
}
System.out.println(id);//Imprime o código gerardo pelo primeiro insert sql1
PessoaTipo pt = new PessoaTipo();
pt.setIdPessoaTipo(id);
String sql= "INSERT INTO tblPessoaFisica(nome,cpf,passaporte,DataNascimento,IdPessoaTipo) VALUES (?,?,?,?,?);";
Connection conexao = (Connection) ConexaoFactory.Conection();
PreparedStatement comando = conexao.prepareStatement(sql);
comando.clearParameters();
comando.setString(1, pf.getNome());
comando.setString(2, pf.getCpf());
comando.setString(3,pf.getPassaporte());
comando.setDate(4, new Date (pf.getDataNascimento().getTimeInMillis()));
comando.setNString(5, pf.getPessoaTipo().setIdPessoaTipo(id)); // aqui acontece o erro
comando.executeUpdate();
Quem poder ajudar grato.
Boa tarde, poderia explicar melhor o que está sendo o seu problema?
AG2016
#3
Boa tarde viciato
eu gostaria de fazer o segundo insert com o Id gerado pelo primeiro insert não esto a conseguir passar como parametro nessa linha
comando.setNString(5, pf.getPessoaTipo().setIdPessoaTipo(id)); // aqui acontece o erro
comando.executeUpdate();
pq ela da um erro.
AG2016
#5
Campelo.m Boa Tarde esse é o erro :
The method setNString(int, String) in the type PreparedStatement is not applicable for the arguments (int, void)
Veja que nesse erro o setNString espera um valor int e uma String, voce esta passando um int e um void.
Voce vai passar um valor para ser inserido no banco, nao bastaria passar somente o id?
comando.setNString(5, String.valueOf(id));
AG2016
#7
Ok Obrigado vou dar uma olhada
Novo erro
Quando faço o teste de inserir
public static void main(String[] args) {
try {
PessoaTipo pt = new PessoaTipo();
pt.setIdPessoaTipo(1L);
PessoaFisica pf = new PessoaFisica();
pf.setNome("Magnolia");
pf.setCpf("265098108");
pf.setPassaporte("N00999");
pf.setDataNascimento(Calendar.getInstance());
pf.setPessoaTipo(pt);
Negocios n = new Negocios();
n.InserirPessoaFisica(pf);
System.out.println("Deu certo");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
13 // Id gerado pelo primeiro insert
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column ‘IdPessoaTipo’ in ‘field list’…
…
O erro fala que a coluna IdPessoaTipo nao existe na tabela tblPessoaFisica.
Veja se o nome da coluna esta correto