.
poxa alguem?
Movi o tópico para o fórum certo. Essa é uma dúvida sobre persistência e não Java básico.
Além disso, lembre-se que poucas pessoas acessam o fórum no domingo, então, dê mais de meia hora antes de upar o tópico.
Uma coisa, use o PreparedStatement e evite aquele monte de concatenação ali. Especialmente se seus dados estão vindo por um request. Isso evita ataques de SQL Injection, ou problemas caso seu usuário resolva, por exemplo, colocar aspas simples em um dos campos. Sem falar que o código fica mais claro, mais limpo e mais portável.
O getGeneratedKeys() retornou para você um ResultSet. Esse resultset contém todas as chaves geradas durante o insert. Para ler, basta fazer:
ResultSet rs = st.getGeneratedKeys();
rs.next();
int idPessoa = rs.getInt(0);
rs.close();
E usar esse idPessoa como FK no endereço.
.
Na tabela endereço, não tem o idPessoa da aquele endereço petence? Ou você tem uma tabela de junção?
na tabela endereco criei um campo end_pessoa que é uma fk da tabela pessoa
Então é do jeito que vc tava fazendo mesmo, mas sem o getParameter:
String sqlendereco = "insert into endereco (end_rua, end_numero, end_uf, end_bairro, end_cep, end_complemento, end_cidade, end_pessoa)"+
" VALUES ('"+request.getParameter("tf_rua")+
"','"+request.getParameter("tf_numeroendereco")+
"','"+request.getParameter("tf_uf")+
"','"+request.getParameter("tf_bairro")+
"','"+request.getParameter("tf_cep")+
"','"+request.getParameter("tf_complemento")+
"','"+request.getParameter("tf_cidade")+
"',"+idPessoa+")";
E melhor ainda se for com PreparedStatement.
ViniGodoy, deixe eu te corrigir… Mas o JDBC é 1-based, ou seja, a primeira posição é 1.
ResultSet rs = st.getGeneratedKeys();
rs.next();
int idPessoa = rs.getInt(1);
rs.close();
entao fiz desse jeito igualzinho vc colocou
mais dá o seguinte erro
An error occurred at line: 161 in the jsp file: /cadCliente.jsp
Duplicate local variable rs
158: "','"+request.getParameter("tf_datacad")+
159: "','"+request.getParameter("rb_sexo")+"')";
160:
161: ResultSet rs = st.getGeneratedKeys();
162: rs.next();
163: int idPessoa = rs.getInt(0);
164: rs.close();
mudei pra rss, tirei o rd lá de cima do meu codigo mais mesmo assim dá erro
.
Bem lembrado. Nunca entendi pq deixaram o primeiro índice como 1.
e agora, usei do jeito indicado porem vem gerando erro
alguem sabe me dizer onde q estou errando