Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

JDBC ResultSet obtém colunas com alias de tabela


O JDBC simplesmente nomeará as colunas pelo que está especificado na consulta - ele não sabe sobre nomes de tabelas etc.

Você tem duas opções:

Opção 1: Nomeie as colunas de forma diferente na consulta, ou seja
SELECT
    a.columnName as columnNameA,
    b.columnName as columnNameB,
    ...
from table1 a, table2 b where (WHATEVER)

em seguida, em seu código java, consulte os aliases de coluna:
resultSet.getString("columnNameA");
resultSet.getString("columnNameB");


Opção 2: Consulte a coluna posição em sua chamada para a API JDBC:
resultSet.getString(1);
resultSet.getString(2);

Observe que a API JDBC usa baseada em um índices - ou seja, eles contam a partir de 1 (não de 0 como índices java), então use 1 para a primeira coluna, 2 para a segunda coluna, etc


Eu recomendaria a opção 1, porque é mais seguro se referir a colunas nomeadas:Alguém pode alterar a ordem das colunas na consulta e isso quebraria silenciosamente seu código (você estaria acessando a coluna errada, mas não saberia) , mas se eles alterarem os nomes das colunas, você receberá pelo menos uma exceção "no such column" em tempo de execução.