[BD] Prepare Statement

7 respostas
reizin

Aproveitando as dúvidas sobre BD…
Existe a possibilidade de recuparar o nome de um campo sem colocar o número da posição que ele ocupa? Só que utilizando o nome da tabela.
Tipo (meramente um exemplo):

Pessoa	        PessoaFisica
--------	---------------
cd_pessoa      cd_pessoa

PreparedStatement pstmt = this.con.prepareStatement ( "SELECT * FROM Pessoa, PessoaFisica" );

Daí, para eu recuperar o cd_pessoa da tabela PessoaFisica, faria da seguinte maneira:

pessoa.setCdPessoa ( rs.getInt ( "PessoaFisica.cd_pessoa" ) );

Mas dessa forma dá um prego, não me lembro qual. Então uso:

pessoa.setCdPessoa ( rs.getInt ( 2 ) );

Existe outra forma de recuprerar esse tipo de informação?

7 Respostas

Mantu

Não sei se dá certo, mas vc já tentou, na query, dar um alias para cada tabela e tentar “acessar” o campo pelo respectivo alias?

reizin

Até que neste exemplo daria sim.
Mas eu preciso trazer todos os campos da tabela (que por sinal bem grande, então uso *), fica um pouco inviável eu colocar o “AS”.

reizin

OPS …

reizin:
Até que neste exemplo daria sim.
Mas eu preciso trazer todos os campos da tabela (que por sinal bem grande, então uso *), fica um pouco inviável eu colocar o “AS”.

Fiz um teste aqui:

PreparedStatement pstmt = this.con.prepareStatement ( "SELECT cd_pessoa AS teste FROM Pessoa, PessoaFisica" )

deu o seguinte erro:

org.postgresql.util.PSQLException: A nome da coluna teste não foi encontrado neste ResultSet.

Logo, não funciona… Teria outra forma?

Fabio_Kung

talvez pq os nomes das colunas/aliases venham todos em maiúsculo. Tenta rs.getInt(“TESTE”);

alexandremlima

Reizin,

Nosso colega falou para colocar um alias para cada tabela. Logo, ficaria assim:

PreparedStatement pstmt = this.con.prepareStatement ( "SELECT P.cd_pessoa,PF.cd_pessoa FROM Pessoa P, PessoaFisica PF" )

Agora é só fazer rs.getInt(“P.cd_pessoa”) que vai funcionar.

Mantu

alexandremlima:
Reizin,

Nosso colega falou para colocar um alias para cada tabela.


Isso mesmo. Não rola fazer isso aí?

reizin

Amigos…
Mesmo erro:

org.postgresql.util.PSQLException: A nome da coluna P.cd_pessoa não foi encontrado neste ResultSet.

Acho que é só com o número da posição da coluna mesmo… :frowning:

Criado 18 de dezembro de 2006
Ultima resposta 19 de dez. de 2006
Respostas 7
Participantes 4