gpt4 book ai didi

java - 在 2 个表中使用具有相同列名的 ResultSetMetaData

转载 作者:行者123 更新时间:2023-12-01 11:24:36 27 4
gpt4 key购买 nike

我想从 2 个表中获取列名,然后使用 ResultSetMetaData 获取它们的值和ResultSet 。假设表 myTable 有 x、y 和 z 列。我愿意

 Select * from table myTable A,myTable B where A.x = B.y

我想在我的代码中使用 B.z 的值。

ResultSetMetaData会将列列为 x y z x y z ,那么如何区分 z 的值与别名 A 和 B 呢?

我需要在查询中使用 *,因为它可以提高我的性能。所以我不能在那里提及列名。有什么方法可以使用 ResultSet 的列名获取 B.z 列的值?我的意思是有什么办法ResultSetMetaData会将列列为 A.x、A.y、A.z、B.x、B.y 和 B.z?

最佳答案

如果您不能或不想指定列名(带有别名),那么您将需要按索引而不是按列标签检索值。 ResultSet API doc明确表示:

When a getter method is called with a column name and several columns have the same name, the value of the first matching column will be returned. The column name option is designed to be used when column names are used in the SQL query that generated the result set. For columns that are NOT explicitly named in the query, it is best to use column numbers. If column names are used, the programmer should take care to guarantee that they uniquely refer to the intended columns, which can be assured with the SQL AS clause.

(强调我的)

如果你想区分列,那么你可以使用 ResultSetMetaData.getTableName ,但它不会帮助您进行检索(除了找到要使用的“正确”索引)。请注意,并非所有数据库都支持提供表名称。

关于java - 在 2 个表中使用具有相同列名的 ResultSetMetaData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30937762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com