Vai ser um pouco dificil explicar minha dúvida por isso irei fazer um exemplo como base da minha pergunta.
Ex: Imaginem duas tabelas no banco de dados, um com o nome de PESSOA e outra denominada ENDEREÇO, dentro da tabela PESSOA, tem uma chave estrangeira chamada ID_END q se liga com o a tabela ENDEREÇO. Lembrando q dentro da segunda tabela o ID_END ele é colocado como auto-incremento. Meu problema esta qnd quero cadastrar um usuário. Tipo as informações do endereço e da pessoa devem ser cadastrados juntos, so q and eu vou adicionar na tabela pessoa eu ainda naum tenho o ID_END, ja q ele é cadastrado ao mesmo tempo.
Eu decidi solucionar essa parada da seguinte forma, no cadastro eu cadastro os dados na tabela ENDEREÇO, depois faço uma busca do do ID_END e depois faço o cadastro na tebela PESSOA. So q dessa forma q eu faço o programa perde muita performace e dinânmica, podendo deixa-lo mais lento … enfim alguém poderia me dizer um forma de fazer isso de um forma melhor, tipo quardando o result set sei lá …
E caso alguém coloque um código, por favor o explique …
Tipo … podem até naum precisar ser distintas, mas eu tava afim de aprender dessa forma saca, pq tipo um diz precisarei fazer assim … a lembrando essa pergunta é para quem programa JDBC puro, sem usar programas como o Hibernate … tipo … li em uma matéria q é possivel atualizar o rsult set de forma q ele cadastre o endereço, depois ele aponte para o id_end para entrar no cadastro da tabela pessoa …
Cara, estão eu sugiro que crie dois formulários de cadastros distintos, e que o ID seja do PESSOA e não do ENDERECO, tipo:
o usuário acessará o cadastro de pessoa e informará os dados necessários, ao salva-lo, será gerado o IDPESSOA, em seguida ele entra na tela do cadastro de endereço (que poderá ser acessado por um botão na página do form PESSOA, que até poderá encaminhar o ID gerado como parâmetro).
O cadastro de endereço será salvo junto ao IDPESSOAL, que será uma FK na tabela.
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/banco", "root", "senha");
Statement stmt = con.createStatement();
stmt.executeUpdate("insert into enderecos values(null, 'R. tal', 'nº 0', 'bairro: tal')");
/*até aqui é normal, mais ou menos como vc está fazendo
* mesmo, criei a conexão e executei uma instrução...
*/
//aqui você pega o Statement que inseriu o registro e pega as chaves geradas
ResultSet res = stmt.getGeneratedKeys();
res.next();
//vai retornar uma coluna só nesse caso, com o id_end que você quer
int id_end = res.getInt(1);
//a partir daqui é só inserir na outra tabela usando o id_end aí em cima
Espero ter ajudado, qualquer coisa é só entrar em contato!