PostgreSQL- getColumnName不起作用,返回别名Name

时间:2016-07-15 20:25:02

标签: java postgresql jdbc postgresql-9.3

我正在尝试从下面的查询中获取列名,

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

Postgres版本是9.3和Java版本1.7,java实现如下。

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));
}

输出

Name: c1
Label: c1

但是,预期是

Name: category
Label: c1

1 个答案:

答案 0 :(得分:5)

鉴于pgsql-jdbc邮件列表here中的评论,您看到的是PostgreSQL JDBC驱动程序的“按设计”行为:

  

这是驱动程序从中获取的信息的限制   服务器,它只返回驱动程序随后用于的“标签”   columnname和label。

与JDBC的许多其他方面一样,给定功能的行为通常可能因特定JDBC驱动程序的实现而异。