从jdbc的元数据对象获取完整列名称

时间:2011-12-15 13:50:48

标签: java jdbc

我正在处理返回列数变化的结果集,因此我需要知道哪些列存在。我发现我可以像这样提取返回的列名:

ResultSetMetaData meta = rs.getMetaData();
ArrayList<String> columns = new ArrayList<String>();
for (int i = 0; i < meta.getColumnCount(); i++) {
    columns.add(meta.getColumnLabel(i+1));
}

然而,这并没有给我在SQL中定义的完整列名。即

select events.id, events.name from events;

显示为“id,name”而不是“events.id,events.name”,这在连接表时非常糟糕,并希望在返回的列名上有所不同。

2 个答案:

答案 0 :(得分:2)

您必须在连接表时指定别名。有两种方法 - getColumnName() - 返回列名和getColumnLabel() - 返回列标签(别名)。如果未指定别名,则getColumnLabel()将返回与getColumnName()返回的值相同的值。

答案 1 :(得分:2)

答案是:您无法从select语句中检索表别名。但是,您可以检索列的基础表的名称,因此您应该能够使用ResultSetMetaData中的getTable(int)来检索它,因为您没有使用表别名,而是使用实际的表。