我正在处理返回列数变化的结果集,因此我需要知道哪些列存在。我发现我可以像这样提取返回的列名:
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”,这在连接表时非常糟糕,并希望在返回的列名上有所不同。
答案 0 :(得分:2)
您必须在连接表时指定别名。有两种方法 - getColumnName()
- 返回列名和getColumnLabel()
- 返回列标签(别名)。如果未指定别名,则getColumnLabel()
将返回与getColumnName()
返回的值相同的值。
答案 1 :(得分:2)
答案是:您无法从select语句中检索表别名。但是,您可以检索列的基础表的名称,因此您应该能够使用ResultSetMetaData中的getTable(int)来检索它,因为您没有使用表别名,而是使用实际的表。