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