Boa tarde galera do GUJ… Primeiramente estou usando banco de dados oracle 10g Express…galera eu tenho uma tabela chamada pessoa com 3 campos: idPessoa(esse campo é auto increment), nome, cpf. E tenho outra tabela que se chama compromisso com 4 campos: idCompromisso, idPessoa(que é chave extrangeira de Pessoa),assunto, dataAssunto. A minha dúvida é. Como eu vou resgatar um dado do campo (idPessoa)da tabela pessoa e colocar na tabela compromisso?
Ex:
PreparedStatementsmtp=this.conexao.prepareStatement("insert into compromisso(idcompromisso,idPessoa,"+"assunto,anotacao,datacompromisso) values(seq_compromisso.nextval,?,?,?,?)");//smtp.setInt(1, );//como eu insiro o campo idPessoa da tabela pessoa que é auto incrementsmtp.setString(2,compromisso.getAssunto());smtp.setString(3,compromisso.getAnotacao());smtp.setDate(4,compromisso.getDataCompromisso());smtp.execute();smtp.close();
INSERT INTO `respostas` (IDENVIO, NOME, IDDESTINO)
SELECT xoops_users.uid, xoops_users.uname,
xoops_xoopscomments.com_id
FROM xoops_users, xoops_xoopscomments
WHERE xoops_users.uid = xoops_xoopscomments.com_uid
Boa tarde Pedrosa.
Deixa eu te perguntar uma coisa. Eu tenho uma tela de cadastro de Pessoa que tem os campos para serem armazenados:
Nome, CPF… o campo idPessoa é auto increment.
Dai eu tenho uma outra tela de cadastro de compromisso que tem os campos para serem armazenados:
assunto,anotacao, o campo idCompromisso é auto increment e o campo idPessoa é chave externa de Pessoa.
Para eu cadastrar um compromisso eu vou selecionar um nome de uma pessoa e preencher os campos citados acima. No meu metodo cadastraCompromisso, como eu vou saber o id do nome selecionado. Como eu vou amarrar os dados do compromisso com o campo nome da tabela pessoa? O nome eu seleciono de uma combo box … que tem o codigo
select*frompessoa...
e me retorna um:
rs.getString(pessoa.getNome());
Agradeco a sua colaboracao
Pedrosa
Você tem uma primeira tela que cadastra a pessoa e uma segunda que cadastra o compromisso, o certo seria passar o código da pessoa para outra tabela, sua aplicação é web ou desktop?
O
omaisnormalbaba
É web… estou usando jsp… esse é o problema… Nesta combo eu tenho o id e o nome… dai eu tenho um metodo que envia esse parametro para o metodo Compromissos.setId();
Pedrosa
Qual a dificuldade?, você utiliza o value do combo para o código e passa para um método que receba essa parametro, onde exatamente está seu problema?
O metodo setPessoa()… recebe como parametro um valor int… e o metodo request.getParameter(“pessoa”) retorna uma string… essa string tem o codigo e o nome da pessoa… por isso nao da pra fazer unbox…
Desculpe - me Pedrosa…
Talvez eu nao estou sabendo te passar…
o campo que o request.getParameter(“pessoa”) esta pegando, contem int e String…por isso da o erro…
java.lang.NumberFormatException: For input string: "13 felipe"
Por isso que eu estou pegando com split()…
Pedrosa
Você poderia fazer esse split antes de setar o objeto, por que está usando String e int no value do combo?
O
omaisnormalbaba
Pedrosa…
Eu consegui… olha oq eu usei…
public void setPessoa(String pessoa) {
Pattern p = Pattern.compile("\d");
Matcher m = p.matcher(pessoa);
boolean b = false;
String resto = "";
while(b = m.find()){
resto += m.group();
}
this.pessoa = new Pessoa();
this.pessoa.setId(Integer.parseInt(resto));
}
Mais uma pergunta… com esse metodo eu estou fazendo POG…(Programação Orientada a Gambiarra)?
Pedrosa
Seria mais elegante esse trecho que contém o expressão regular fosse em um método separado, um bean não deve ter nenhum tipo de inteligencia.