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

发布于 2024-12-21 12:31:29 字数 468 浏览 0 评论 0原文

我正在处理一个结果集,其中返回的列数有所不同,因此我需要知道存在哪些列。我发现我可以像这样提取返回的列名:

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 中定义的完整列名。 IE。

select events.id, events.name from events;

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

I'm processing a resultset where the number of returned columns vary and thus I need to know which columns are present. I found that I can extract the returned column names like this:

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

This however does not give me the full column name defined in my SQL. Ie.

select events.id, events.name from events;

shows up as "id, name" and not "events.id, events.name" which is pretty bad when joining tables and wanting to differ on the column names returned.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺深海 2024-12-28 12:31:29

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

The answer is: you can't retrieve the table alias from the select statement. You can however retrieve the name of the underlying table of a column, so you should be able to retrieve this using getTable(int) from ResultSetMetaData as you are not using table aliases, but are using the actual tables.

满栀 2024-12-28 12:31:29

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

You have to specify an alias while joining tables. There are two methods - getColumnName() - returns a column name and getColumnLabel() - returns a column label (alias). If an alias is not specifed then the getColumnLabel() returns same value as the value returned by the getColumnName().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文