/ / PostgreSQL- getColumnName ne fonctionne pas, alias retourné Name - java, postgresql, jdbc, postgresql-9.3

PostgreSQL - getColumnName ne fonctionne pas, retourne l'alias Nom - java, postgresql, jdbc, postgresql-9.3

J'essaie d'obtenir le nom de la colonne à partir de la requête ci-dessous,

SELECT
category as c1,
forecast_2016,
category,
rowcount,
item_number,
rowcount,
category,
avg_demand_2014_2015,
category,
avg_spend_2014_2015,
avg_demand_2014_2015,
avg_spend_2014_2015,
demand_2015
FROM
ag_instrument_portfolio_master LIMIT 1

La version de Postgres est la version 9.3 et la version 1.7 de Java, la mise en œuvre de Java est ci-dessous.

stmt = con.createStatement();
rs = stmt.executeQuery(query.toString());
ResultSetMetaData columnsMetadata = rs.getMetaData();
int i = 0;
while (i < columnsMetadata.getColumnCount()) {
i++;
System.out.println("Name: " + columnsMetadata.getColumnName(i));
System.out.println("Label: " + columnsMetadata.getColumnLabel(i));
}

La sortie est

Name: c1
Label: c1

Mais, attendu est

Name: category
Label: c1

Réponses:

5 pour la réponse № 1

Compte tenu du commentaire dans le pgsql-jdbc liste de diffusion ici, il semble que ce que vous "voyez" soit le comportement "tel que conçu" du pilote JDBC de PostgreSQL:

Il s’agit d’une limitation des informations que le conducteur récupère de la serveur, il ne renvoie que le "label" que le pilote utilise ensuite pour nom de colonne et étiquette.

Comme pour de nombreux autres aspects de JDBC, le comportement d'une fonctionnalité donnée peut souvent varier en fonction de la mise en œuvre d'un pilote JDBC spécifique.