Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PostgreSQL-getColumnName不工作,返回别名_Java_Postgresql_Jdbc_Postgresql 9.3 - Fatal编程技术网

Java PostgreSQL-getColumnName不工作,返回别名

Java PostgreSQL-getColumnName不工作,返回别名,java,postgresql,jdbc,postgresql-9.3,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,

我试图从下面的查询中获取列名

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: category
Label: c1

根据
pgsql jdbc
邮件列表中的注释,您看到的似乎是PostgreSQL jdbc驱动程序的“按设计”行为:

这是对驱动程序从服务器返回的信息的限制 在服务器上,它只返回驱动程序随后用于两者的“标签” 列名称和标签


与JDBC的许多其他方面一样,给定功能的行为通常会根据特定JDBC驱动程序的实现而有所不同。

选择类别为c1
更改为
选择类别
,这是正确的列名。它在SQL中定义为。就Java而言,这就是列名。在这种情况下,您需要更改查询以返回category而不是c1。@Nicarus,我特意指定了别名以减少json大小,我的记录将以百万分之一的数量出现。如果您有意将
category
别名为
c1
,为什么您希望它作为列名?因此您故意阻止
getColumnName()
提供更长的名称。你必须选择你想要的,短列名还是长列名。
Name: category
Label: c1