[quote=TASF]Fala ae galera consegui resolver essa questão de uma forma + simples do que usar
Statement.RETURN_GENERATED_KEYS
ate pq dessa forma eu nao soube o que fazer com o retorno que parece um endereco de memoria .
entao vo postar a solução pra quem se encontrar no mesmo dilema que eu
basicamente é usado LAST_INSERT_ID() para faser o insert simultaneamente, pois é esse “metodo” que irá retornar o valor do campo id que foi encrementado antes da query em que o cita.
segue os 2 insert’s pra facilitar o entendimento
String sqlUSER=("INSERT INTO gcp020_pessoa (gcp020_nome,gcp020_email,gcp020_telefone_01,gcp020_telefone_02,gcp020_endereco,gcp020_bairro,gcp020_cidade,gcp020_sexo,gcp020_tipo_perfil) VALUES(?,?,?,?,?,?,?,?,?)");
String sqlCOLABORADOR=("INSERT INTO gcp03_colaborador (gcp03_login,gcp03_senha,gcp03_dt_admissao,gcp03_realiza_vendas,gcp020_pessoa_gcp020_idgcp020_pessoa) VALUES(?,?,?,?,LAST_INSERT_ID())");//last_insert... retorna o ultimo id que foi incrementado antes da querry que o cita ou seja retorna ultimo id incrementado da tabela pessoa
E no PreparedStatement do insert que contem a FK fica assim
stmtColaborador.setString(1,cb.getLogin());
stmtColaborador.setString(2,cb.getSenha());
stmtColaborador.setString(3, cb.getDtAdmissao());
stmtColaborador.setString(4, cb.getRealizaVendas());
stmtColaborador.execute();
//o detalhe é que eu passei apenas os 4 paramentros ?,?,?,? e o quinto que é a FK fica por conta do LAST_INSERT_ID() como ja dito faz o trabalho de inserir a PK de um como FK na outra
Obrigado aê pelas dicas.mas achei uma maneira mas simples. até a proxima…[/quote]
Correto também, mas vale lembrar que essa solução só funciona no SGBD que você está usando (qual seria ? MySQL, Oracle , SQL Server ?). Essa função LAST_INSERT_ID(), até onde eu me lembro não é padronizada pelo ANSI SQL.