Problemas ResultSet PostgreSQL 8

3 respostas
B

Galera, estou com um problema ao renomear tabelas no PostgreSQL.
Tenho por exemplo a seguinte instrução SQL:

select a.noticiaid, a.descricao, a.data, a.titulo, 
         b.usuarioid, b.nome, 
         c.assuntoid, c.descricao 
from  noticias    as a, 
         usuarios   as b, 
         assuntos  as c 
where a.assuntoid  =  c.assuntoid
    and a.usuarioid  =  b.usuarioid

Ao executar ela, ocorre tudo normal, ela funciona corretamente. O problema está na hora de obter o resultado dela, pois quando eu faço um rs.getString(“a.descricao”), ele me informa que a coluna a.descricao não existe.
Estou migrando de um banco MySQL para o PostgreSQL, e no MySQL funcionava tudo certinho. Sei que pode-se usar o numero da coluna também para pegar o valor, mas isso não se tornaria muito bom pois se eu precisar selecionar mais uma coluna no meio tem que mudar toda a classe.
Alguém tem alguma luz do que poderia estar errado?

3 Respostas

J
select a.noticiaid, a.descricao, a.data, a.titulo, 
         b.usuarioid, b.nome, 
         c.assuntoid, c.descricao 
from  noticias    as a, 
         usuarios   as b, 
         assuntos  as c 
where a.assuntoid  =  c.assuntoid 
    and a.usuarioid  =  b.usuarioid

Para recuperar os valores do teu ResultSet é só fazer assim:

rs.getInt("noticiaid");
  rs.getString("descricao");

Lembrando que se você tiver mais de uma coluna com o mesmo nome vc deve dar um “apelido” para a coluna.

Ex.:

Select p.nome, u.nome as usuario 
 from usuarios u, pessoas p
 where p.oid = u.pessoa

Para recuperar os valores do teu ResultSet :

rs.getString("nome");
  rs.getString("usuario ");
B

Mas ai eu teria que apelidar coluna por coluna.
O que eu estava fazendo era apelidando a tabela, e então obter o campo a partir do apelido da tabela.campo, e isso estava funcionando perfeitamente no MySQL. Se eu tiver que apelidar as coluna irá me gerar muito mais trabalho, pois terei que rever todas as instruções de minha aplicação :frowning:

J

Cara você não tem que “apelidar” todas as colunas a não ser que queira, você somente deve “apelidar” as colunas que tiverem o mesmo nome dentro do teu SQL.

Select p.nome, u.nome as nm_usuario 
 from usuarios u, pessoas p 
 where p.oid = u.pessoa
Criado 6 de julho de 2005
Ultima resposta 6 de jul. de 2005
Respostas 3
Participantes 2